Swift setter中的快速返回值
我需要从setter返回一个字符串,我怎么做?代码如下:Swift setter中的快速返回值,swift,swift3,return-value,getter-setter,Swift,Swift3,Return Value,Getter Setter,我需要从setter返回一个字符串,我怎么做?代码如下: func example()->String{ var _a = 5 var a: Int{ set(newValue){ _a = newValue if _a < 0{ //return a string here!! } }get{ return
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
}
func example()->String{
var_a=5
变量a:Int{
设置(新值){
_a=新值
如果a<0{
//在这里返回字符串!!
}
}得到{
返回a
}
}
a=0
}
不,不幸的是,你不能这么做,但如果你能这么做的话,那就太令人困惑了
我们都知道闭包是Swift中的头等公民,闭包可以嵌套。这里要做的是将一个闭包放在另一个闭包中,并尝试从内部闭包返回一个值。但是,即使可以嵌套闭包,两个不同的闭包也是两个不同的闭包。将嵌套闭包视为非嵌套闭包。确保可以在内部闭包中使用外部闭包中的值:
func a(x: Int) {
func b() {
// use x here
}
}
func a() -> String {
func b() {
return ""
}
b()
}
但这也是使用2个非嵌套闭包可以做到的。您试图做的是通过从内部闭包返回值使外部闭包返回:
func a(x: Int) {
func b() {
// use x here
}
}
func a() -> String {
func b() {
return ""
}
b()
}
对于2个非嵌套闭包,这是不可能的:
func a() -> String {
b()
}
func b() {
return ""
}
不管怎样,如果你真的能做到这一点,你的代码就很难理解了。作为代码的读者,人们希望返回语句能够准确地说明返回的值。他们不期望有一个好的结果
a = 0
那是退货。他们必须查看
a
的setter,以了解闭包将返回什么值。这需要在代码中进行大量的上下查找,这非常不方便。不,很遗憾,您不能这样做,但是如果您仍然可以这样做的话,它将非常混乱
我们都知道闭包是Swift中的头等公民,闭包可以嵌套。这里要做的是将一个闭包放在另一个闭包中,并尝试从内部闭包返回一个值。但是,即使可以嵌套闭包,两个不同的闭包也是两个不同的闭包。将嵌套闭包视为非嵌套闭包。确保可以在内部闭包中使用外部闭包中的值:
func a(x: Int) {
func b() {
// use x here
}
}
func a() -> String {
func b() {
return ""
}
b()
}
但这也是使用2个非嵌套闭包可以做到的。您试图做的是通过从内部闭包返回值使外部闭包返回:
func a(x: Int) {
func b() {
// use x here
}
}
func a() -> String {
func b() {
return ""
}
b()
}
对于2个非嵌套闭包,这是不可能的:
func a() -> String {
b()
}
func b() {
return ""
}
不管怎样,如果你真的能做到这一点,你的代码就很难理解了。作为代码的读者,人们希望返回语句能够准确地说明返回的值。他们不期望有一个好的结果
a = 0
那是退货。他们必须查看
a
的setter,以了解闭包将返回什么值。这需要在代码中进行大量的上下查找,这非常不方便。setter只设置值,不返回。但您可以在示例中使用变量,从逻辑上讲,您不能在setter中返回值……为什么要从set中返回任何值?它有什么用?setter只设置值不返回。但您可以在示例中使用变量,从逻辑上讲,您不能在setter中返回值……为什么要从set中返回任何值?它有什么用?