如何保证inout参数不会更改类型并且在函数中不会变为nil

时间:2019-06-03 10:16:26

标签: swift reference optional inout

swift 4中工作。我有这样的功能

func setFields<T>(_ fromView : UIView,  toObject : inout T!) -> T! 

setFields(self.view, toObject: &self.productExtended.product)

//inside ProductExtended
public var product: Product

当我这样称呼它时,出现错误:

  

“可以将Inout参数设置为'Product'以外类型的值;使用声明为'_?类型的值代替”

此外,如果我尝试在ProductExtended.Product内部的某个字段中调用它,则会得到模棱两可的上下文 有没有一种方法可以向编译器保证我不更改该参数的值类型,并且在函数内部不使其变为nil?

1 个答案:

答案 0 :(得分:0)

inout将不接受 Generic 类型,因为引用要将值存储回其原始值。这是inout https://docs.swift.org/swift-book/LanguageGuide/Functions.html

的链接