设置器中的快速返回值

问题描述:

我需要从setter中返回一个字符串,我该怎么做?下面是代码:设置器中的快速返回值

func example()->String{ 
    var _a = 5 
    var a: Int{ 
     set(newValue){ 
      _a = newValue 
      if _a < 0{ 
       //return a string here!! 
      } 
     }get{ 
      return _a 
     } 
    } 
    a = 0 
} 
+0

setter只设置值不返回。但是你可以在你的'example'方法中使用变量 –

+0

从逻辑上讲,你不能*返回* setter中的值* ... –

+1

为什么你想要返回集合中的任何值?它有什么用处? – Sahil

不,你不能做到这一点很遗憾,但是这将是相当混乱,如果你能做到这一点呢。

我们都知道闭包是Swift中的一等公民,闭包可以嵌套。你在这里做的是在另一个闭包中放置一个闭包,并试图从内闭包中返回一个值。然而,即使闭包可以嵌套,两个不同的闭包是两个不同的闭包。将嵌套闭包想象成非嵌套闭包。当然,你可以在内部封闭使用值从外罩:

func a(x: Int) { 
    func b() { 
     // use x here 
    } 
} 

但是,这东西,你可以用2个非嵌套封做的一样好。你所要做的是通过从内罩返回一个值,使外部封闭回报:

func a() -> String { 
    func b() { 
     return "" 
    } 

    b() 
} 

这简直是不可能的2个非嵌套关闭:

func a() -> String { 
    b() 
} 

func b() { 
    return "" 
} 

不管怎么说,如果你真的可以做到这一点,将很难理解你的代码。作为代码的读者,人们会希望得到一个返回语句,指出准确返回的值。他们不希望

a = 0 

返回的东西。他们将不得不查看a的二传手以了解封闭将返回什么样的价值。这是很多在代码中查找和查看的,这非常不方便。