aynı anlamı mı, sadece bir şablon. Tüm let
ifadeler let
pattern
=
expression
in
other-expression
benziyor. Burada desen her zaman eşleşecektir, çünkü print_string
unit
döndürür ve ()
bu türün tek değeridir. Bu şekilde, ilk ifadenin daha çok bir ifadeyle (unit
döndürür) iki ifadeyi bir araya getirmenin bir başka yolu.
Yani haklısınız, yapının ;
işlecini kullanmasıyla hemen hemen aynı anlamı vardır. Tek gerçek fark önceliklidir. Örneğin, sen
if x < 3 then
print_string "something";
f x
yazarsanız size f x
denilen hep olduğunu bulur. ;
'un önceliği, ikinci ifadeyi if
denetiminin altına çekmek için çok düşük. Bu nedenle birçok insan (benim dahil) let() =
expression
'u kullanma alışkanlığına giriyor. Eğer
if x < 3 then
let() = print_string "something"
in f x
x
ne istiyorum genellikle olduğu 3'ten az olması durumunda sadece denir f x
yukarıdaki yazarsanız. Özünde, let
'un önceliği ;
'dan çok daha yüksektir.
Elbette bu efekti elde etmenin başka yolları da olabilir, ancak let
kullanımıyla ilgili güzel olan şey, kodda daha sonra (kapama parantezi veya end
gibi) herhangi bir şey eklemek zorunda kalmamanızdır. print_string
hata ayıklama ifadesi olarak ekliyorsanız, bu değişiklikleri yerel olarak tek noktada tutmanın kullanışlı bir yoludur.
Muhtemelen 'let _ = ...' mümkünse, ancak tüm ifadeler olmasa bile çoğunda çalışacağı için kullanmak isteyeceksiniz. –
'let _ = ...' veya kırılgan desen eşleşmesi kesinlikle önerilmez. Tip sistemine bir orta parmak vermek neredeyse eşdeğerdir. – nlucaroni
Nlucaroni'ye katılıyorum. eğer istersen izin ver = ... ... ..., o zaman muhtemelen görmezden geleceksin (...); ... ' – newacct