我试图理解为什么这个特定的方案代码返回36的值。我不明白这些变量是如何绑定的。
System.getProperties().put( "server.port", 80 );
SpringApplication.run(App.class, args);
如果有人可以提供对此代码的全面遍历,那么这对我的学习非常有帮助。谢谢。
答案 0 :(得分:3)
使用替换原则来评估代码。让代码缩进很有用,因为你可以很容易地看到哪些表达式可以插入lambdas
(((lambda (fn) (lambda(x) (fn (fn x)))) (lambda (x) (* x 3))) 4)
首先,我们将(lambda (x) (* x 3))
替换为fn
((lambda(x) ((lambda (x) (* x 3)) ((lambda (x) (* x 3)) x))) 4)
现在我们将4
替换为最外面的x
((lambda (x) (* x 3)) ((lambda (x) (* x 3)) 4))
现在我们将4
替换为右侧lambda的x
((lambda (x) (* x 3)) (* 4 3))
评估(* 4 3)
((lambda (x) (* x 3)) 12)
将12
替换为x
(* 12 3)
评估
36