繁体   English   中英

Swift REPL意外行为

[英]Swift REPL Unexpected Behaviour

如果我在Swift repl中使用以下代码,则会得到意外的结果:

  1> func addA(s: String)->String { 
  2.     return s + "a" 
  3. } 
  4.  
  5. func addB(s: String)->String { 
  6.     return s + "b" 
  7. }
  8>  
  9> println(addA(""))
a
 10> println(addB(""))
b
 11> println(addA(addB("")))
ba
 12> let p = addA(addB(""))
p: ((String)) = {
  _core = {
    _baseAddress = 0x0000000100500060
    _countAndFlags = 2
    _owner = (instance_type = Builtin.RawPointer = 0x0000000100500040)
  }
}
 13> println(p)
ba
 14> let q = "a" + "b"
q: String = "ab"

为什么声明p产生这种行为,而声明q却不会呢?

这里发生的所有事情就是REPL使您可以在Swift内部了解一些基本的效率。 p存储为某种函数组合。 需要评估时,将对其进行评估。 如果您不希望看到香肠在做,那您不应该进入香肠工厂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM