일부 언어에서는 거의 모든 것을 값으로 사용할 수 있습니다. 예를 들어, 일부 언어는 코드 블록을 값을 반환 할 수있는 단위로 취급 할 수 있습니다. 반응식다른 언어의 "블록 값"에 해당하는 C#
가치 반환 수 let
래핑 코드 블록 :
my $val = do
{
my $a = 100;
my $b = 200;
my $c = $a + $b;
$c;
};
가장 가까운 근사치 I 있었던 값을 차단할 :
(define val
(let()
(define a 10)
(define b 20)
(define c (+ a b))
c))
펄 5는 값으로 블록 지지대 C#에서는 캐스팅되어 즉시 호출되는 람다를 사용하는 것이 었습니다.
var val = ((Func<int>)(() =>
{
var a = 10;
var b = 20;
var c = a + b;
return c;
}))();
그다지 나쁘지는 않으며 실제로 Scheme에서 의미 상으로 어떤 일이 일어나고 있는지 정확히 알 수 있습니다. let
은 적용되는 lambda
으로 변환됩니다. 이 시점에서 나는 C#의 매크로가 통어론을 깨끗이 정리하는 데 신경 쓰지 않을 것이다.
C#에서 "블록 값"을 얻는 또 다른 방법이 있습니까?
무엇을하려고합니까? 일대일 매핑이 없을 수도 있습니다. 게다가, 나는 대표들이 당신이 찾고있는 것일지도 모른다라고 생각한다. –
익명 메서드가 있지만 (http://msdn.microsoft.com/en-us/library/0yw3tz5k.aspx) 개인적으로 lambdas를 선호합니다. – FuleSnabel