字符串扩展,添加一个方法“add”并将一个 Int 作为没有标签的参数并返回一个可选的 Int
Posted
技术标签:
【中文标题】字符串扩展,添加一个方法“add”并将一个 Int 作为没有标签的参数并返回一个可选的 Int【英文标题】:String extension that adds a method "add" and takes an Int as a parameter with no label and returns an optional Int 【发布时间】:2019-10-11 23:24:34 【问题描述】:我正在尝试进行字符串扩展,该扩展添加了一个方法“add”并将一个 Int 作为没有标签的参数并返回一个可选的 Int。如果字符串可以转换为整数,则返回一个整数,字符串的整数值加上传入的值。如果字符串不能转为整数,则返回 nil。
我写了下面的代码,但是我无法让它工作。
我收到每个值的以下警告消息:
从未使用过不可变值“value1”;考虑用“_”替换或删除它
import UIKit
class MyViewController: UIViewController
override func loadView()
let value1: Int? = "5".add(3) // value1 will equal 8
let value2: Int? = "-2".add(1) // value2 will equal -1
let value3: Int? = "words".add(4) // value3 will be nil
extension String
func add(_: Int) -> Int?
guard let someString = Int(self) else
return nil
return someString + someString
解决方案应该是这样的:
let value1: Int? = "5".add(3) // value1 will equal 8
let value2: Int? = "-2".add(1) // value2 will equal -1
let value3: Int? = "words".add(4) // value3 will be nil
【问题讨论】:
“我无法让它工作”是什么意思? 这是我为每个值得到的以下错误:从未使用不可变值'value1';考虑用“_”替换或删除它。 Swift 是说,在定义value1
之后,你永远不会使用它,那何必呢。添加一些打印(例如print(value1)
),然后你会看到你有另一个错误。
【参考方案1】:
您的扩展的问题是您忘记将方法参数命名为 func add(_ value: Int) -> Int?
并将其添加到 someString 值。顺便说一句,将安整数命名为 someString 具有误导性,而 Swift 是一种类型推断语言。大多数情况下不需要显式设置结果类型:
extension String
func add(_ value: Int) -> Int?
guard let integer = Int(self) else
return nil
return integer + value
let value1 = "5".add(3) // value1 will equal 8
let value2 = "-2".add(1) // value2 will equal -1
let value3 = "words".add(4) // value3 will be nil
要使有关不使用值的警告静音,您可以简单地打印它们。
【讨论】:
以上是关于字符串扩展,添加一个方法“add”并将一个 Int 作为没有标签的参数并返回一个可选的 Int的主要内容,如果未能解决你的问题,请参考以下文章