0
서버로 실행되는 응용 프로그램이 있으며 일부 계산에서 값을 반환합니다. 차별화 된 유니온 유형 MessageType
을 만들었으므로 응용 프로그램간에 서로 다른 유형의 메시지를 전달할 수 있습니다.F # 식별 된 공용체 액세스 값
MessageType
은 ExchangeFrame
인 ExchangeMessage
으로 구성됩니다. 내가 가진 질문은 MessageType
에서 ExchangeFrame
의 값에 액세스하는 방법입니다. 디자인 약자로
코드는 당신이 다음 메세지 유형에서 프레임을 추출하고 일치 (1) 패턴에 의한 교환 프레임에 액세스 할 수 있습니다, 그것은 더 나은
[<CLIMutable>]
type ExchangeFrame =
{
FrameType: FrameType
Amount: double;
ConvertTo: Currency
ConvertFrom: Currency
}
type MessageType = ExchangeMessage of ExchangeFrame
let server() =
use context = new Context()
// socket to talk to clients
use responder = context |> Context.rep
"tcp://*:5555" |> Socket.bind responder
Console.WriteLine("Server Running")
while true do
// wait for next request from client
let messageReceived = responder |> Socket.recv |> decode |> deserializeJson<MessageType>
//Do Calculations
let total = doCalculations //MessageReceived.ExchangeMessage.Amount 3.0
// send reply back to client
let message = encode <| total
message |> Socket.send responder
server()
'ExchangeMessage (프레임) -> .. // 프레임 무언가로 수행' –
존 감사합니다.하지만 교환 프레임의 각 값에 어떻게 접근 할 수 있을지 혼란 스럽습니다. 조금 더 구체화 할 수 있습니까 –
그러면'frame.Amount' 또는 무엇이든 할 수 있습니다. –