如何在if语句外部定义var并在外部使用它

时间:2019-03-18 14:30:58

标签: swift

var firstname: [String] = []
var year = Int.random(in: 1900 ... 2020)
if (1900 ..< 1910).contains(year){
    if (gender == "male"){
        firstname = _1900s_boysnames_uk.randomElement()
    }
}

获取错误无法分配类型为'String?'的值键入“ [String]”作为名字 我该如何解决?

2 个答案:

答案 0 :(得分:6)

firstname变量是[String]上的一种类型,表示应包含字符串数组。

firstname = _1900s_boysnames_uk.randomElement()行上,您将String的值分配给字符串数组。

要解决此问题,您可以将行更改为firstname.append(_1900s_boysnames_uk.randomElement())

答案 1 :(得分:0)

您收到此错误,因为数组def _exec_crf_test(input_text, model_path): with tempfile.NamedTemporaryFile() as input_file: input_file.write(utils.export_data(input_text)) input_file.flush() return subprocess.check_output( ['crf_test', '--verbose=1', '--model', model_path, file.name]).decode('utf-8') 可能为空,因此_1900s_boysnames_uk的返回值也可能为randomElement(),为此我们将返回值视为{{ 1}}

您可以添加?插入第一行,这意味着数组可以包含nil值,但这不是更好的方法

optional

或者您可以在if条件中使用此语法

nil

请添加

var firstname: [String?] = []

这意味着变量“名字”将包含一个名称列表

并向列表中添加新名称,您将使用“ append”,例如:

if let firstname = _1900s_boysnames_uk.randomElement() {
    firstname.append(firstname)
}

如果只想给它分配一个名称,请使用:

var firstname: [String] = []
  

Swift中的建议是在命名变量时使用驼峰式命名约定。如果您不知道骆驼的大小写,则是一种命名约定,在变量名中的第一个单词使用小写字母,随后的每个单词使用大写字母。