default
예를 들어 C # 키워드에 해당하는 것을 찾고 있습니다 .
public T GetNext()
{
T temp = default(T);
...
감사
답변:
블로그에서 " 이 C # 코드는 F #에서 어떻게 생겼습니까? (1 부 : 표현식 및 문) "
C #에는 지정된 형식의 0으로 초기화 된 값을 반환하는 "default"라는 연산자가 있습니다.
default(int)
유용성이 제한적입니다. 일반적으로 제네릭에서 default (T)를 사용할 수 있습니다. F #에는 라이브러리 함수와 유사한 구조가 있습니다.
Unchecked.defaultof<int>
기술적으로 말하면 F # 함수 Unchecked.defaultof<'a>
는 default
C # 의 연산자 와 동일합니다 . 그러나 F # defaultof
에서는 안전하지 않은 것으로 간주되며 실제로 필요할 때만 사용해야합니다 ( null
F #에서도 권장되지 않는를 사용 하는 것과 같이 ).
대부분의 상황 defaultof
에서 option<'a>
유형 을 사용하여 필요를 피할 수 있습니다 . 값을 아직 사용할 수 없다는 사실을 나타낼 수 있습니다.
그러나 여기에 아이디어를 보여주는 간단한 예가 있습니다. 다음 C # 코드 :
T temp = default(T);
// Code that may call: temp = foo()
if (temp == default(T)) temp = bar(arg)
return temp;
F #에서 다음과 같이 작성 될 수 있습니다 (명령형 기능 사용).
let temp = ref None
// Code that may call: temp := Some(foo())
match !temp with
| None -> bar(arg)
| Some(temp) -> temp
물론 이것은 특정 시나리오에 따라 다르며 경우에 따라 defaultof
수행 할 수있는 유일한 작업입니다. 그러나 defaultof
F #에서 덜 자주 사용 된다는 점을 지적하고 싶었습니다 .
Some(_)
. 반환 Some(value)
하거나 Some(defaultof<>)
둘 다 Some _
일치 표현식 의 대소 문자와 일치합니다. 다음을 사용할 수 있습니다 context.Items |> Seq.tryFind(fun II -> ii.Name = i.Name)
. 일치식이 예상대로 작동합니다