Yanıtlar:
İşlev çağrısı sözdizimi söz konusu olduğunda Nim oldukça esnektir. Örneğin, bir işlevi bir argümanla çağırmanın bazı yolları şunlardır:
ord(c)
ord c
c.ord
Ve bir işlevi iki argümanla çağırmanın yolları:
max(a,b)
a.max(b)
a.max b
Durumunuza en uygun, özellikle öncelikli olmak için en golf halini seçin. Örneğin, karşılaştırın:
abs(n)+2
n.abs+2
(abs n)+2
Aksine:
abs(n+2)
(n+2).abs
abs n+2
futureModülü kullanınfutureLambda'lar ve liste türetimi: modül iki ana bayt tasarrufu özellikleri içerir. Lambdalar son derece kullanışlıdır.
Örneğin, bu:
proc f(s:any):any=s&", world!"
bu kısaltılabilir:
import future
s=>s&", world!"
bayt tasarrufu sağlar. Bununla birlikte, lambdasların bir parametre listesinin dışında kullanılamayacağını unutmayın - bu nedenle kodunuzu test etmek için aşağıdaki gibi bir şey yapmanız gerekecektir:
import future
proc test(f: string -> string) = echo f "Hello"
test(s=>s&", world!")
Ayrıca, liste kavrayışları futuremodül ile birlikte kullanılabilir . Örneğin, bu kod @[...]100'den küçük tüm karelerden bir seq ( ) 4 ile yazdırılır :
import future
echo lc[x*x|(x<-1..9,x*x mod 4==0),int]
anyyerine bazen kullanabileceğinizi belirtmek gerekir string, ancak bu yine de kaydeder.
any, bahşiş için teşekkürler! Bunu bir cevap olarak göndermelisin.
proc(s:any):any=s&", world!"bırakarak yapabilirsiniz<space>fproc
max a,bHatta işe yaradığını unutmayın (bazen).