我正在使用Swift的Decimal
类型,试图确保用户输入的String
是有效的Decimal
。
我在我的游乐场文件中有两个String
值,每个值包括一个字母。其中一个值在开头包含一个字母,而另一个在末尾包含一个字母。我使用每个值初始化一个Decimal
,只有一个Decimal
初始化失败;在开头包含字母的值中初始化的Decimal
。
为什么使用末尾包含一个字母的值初始化的Decimal
返回一个有效的Decimal
?我希望nil
会被返回。
附上的是我的游乐场文件的截图。
发布于 2017-06-03 03:31:19
它是这样工作的,因为Decimal
接受字母之前的任何数字值。这些字母充当后面任何数字的终止符。所以在你的例子中:
12a = 12 ( a is the terminator in position 3 )
a12 = nil ( a is the terminator in position 1 )
如果希望两者都无效,如果字符串包含一个字母,则可以使用Float
。
https://stackoverflow.com/questions/44339789
复制相似问题