Ben başlangıç hickey book kullanarak, ocaml öğreniyorum ve ben Egzersiz 3.4 şaşırıp, bölüm 9Ocaml değişken kapsamı nasıl çalışır?
let x x = x + 1 in x 2
operasyon olduğunu 3
sonucunu ama nedenini anlamıyorum?
Ben başlangıç hickey book kullanarak, ocaml öğreniyorum ve ben Egzersiz 3.4 şaşırıp, bölüm 9Ocaml değişken kapsamı nasıl çalışır?
let x x = x + 1 in x 2
operasyon olduğunu 3
sonucunu ama nedenini anlamıyorum?
let x x = ...
yazdığınızda, bağımsız değişkenine x
adını bağlayan x
adlı bir işlev tanımlıyorsunuz. Eğer let
yerine let rec
kullanılan bu yana
, işlev böylece kadarıyla o bildiği gibi yaklaşık bilinmeye değer x
tek bir argüman olarak geçirilen biridir kendi ismini bilmiyor. Eğer x 2
ile işlevini çağırdığınızda
Bu nedenle, adı x
değer 2
bağlar ve sonuç olarak 3
alma, x+1
değerlendirir.
Teşekkürler, bir işlev ve bir argümanın aynı ada sahip olabileceğini bilmiyordum. – bbaja42
Onlar yapabilirler, ama elbette ** asla, asla gerçek kodda bunu yapmamalısınız :) (Aslında bu 'izin ver' yerine 'bırak' ile çalışır ve daha kafa karıştırıcı olma potansiyeline sahiptir. .) –
Bunun niçin, 'xx = e' 'nin x = (x => e) 'yi kullanması için kestirme olduğunun farkına vardığınızda bunun neden mümkün olduğunu görmek daha kolay. –