在swift中,如果没有更多的上下文,表达式的类型是不明确的?

在swift中,如果没有更多的上下文,表达式的类型是不明确的?,swift,optional,Swift,Optional,你好,我有一个学生班,有一些细节,下面的代码 struct Student { let stud_name1: String? let stud_name2: String? var length: Bool { return[stud_name1, stud_name2].joined(separator: " ").count <= 15 } } struct学生{ 让我们来命名1:字符串? 让我们看看你的名字2:字符串? 变量长度:Bool{ r

你好,我有一个学生班,有一些细节,下面的代码

struct Student {
   let stud_name1: String?
   let stud_name2: String?

   var length: Bool {
       return[stud_name1, stud_name2].joined(separator: " ").count <= 15
 }
}
struct学生{
让我们来命名1:字符串?
让我们看看你的名字2:字符串?
变量长度:Bool{
return[stud\u name1,stud\u name2]。已联接(分隔符:“”)。计数将其设为结构

struct Student {
   let stud_name1: String
   let stud_name2: String 
   var length: Bool {
       return[stud_name1, stud_name2].joined(separator: " ").count <= 15
   }
}

您正在使值计算过于复杂。此代码执行相同的操作,但效率更高

struct Student {
   let stud_name1: String?
   let stud_name2: String?

   var length: Bool {
       let name1len = stud_name1?.length ?? 0
       let name2len = stud_name2?.length ?? 0
       return name1len + 1 + name2len <= 15
   }
}
struct学生{
让我们来命名1:字符串?
让我们看看你的名字2:字符串?
变量长度:Bool{
让name1len=螺柱\u name1?长度??0
设name2len=螺柱\名称2?长度??0

return name1len+1+name2len您好,它是struct,我希望它的属性是可选的。这里有几点注释:1)编号的变量很好地表明您应该使用数组。事实上,您最终使用
stud_name1
stud_name2
。2)击键是免费的;使用它们。3)Swift约定是使用
UpperCamelCase
,而不是变量名的
snake\u case
length
会建议该值返回学生的长度(不管这意味着什么)。您所做的更适合于
lengthIsValid
[String?]
没有连接函数,只有
[String]
有连接函数
struct Student {
   let stud_name1: String?
   let stud_name2: String?
   var length: Bool {
    return[stud_name1, stud_name2].compactMap{$0}.joined(separator: " ").count <= 15
   }
}
struct Student {
   let stud_name1: String?
   let stud_name2: String?

   var length: Bool {
       let name1len = stud_name1?.length ?? 0
       let name2len = stud_name2?.length ?? 0
       return name1len + 1 + name2len <= 15
   }
}