Swift枚举,是否将该值设置为项的名称?
我正在解析文件中的字符串。其中一个字符串的值与颜色枚举中的名称相同。例如,枚举包含Swift枚举,是否将该值设置为项的名称?,swift,Swift,我正在解析文件中的字符串。其中一个字符串的值与颜色枚举中的名称相同。例如,枚举包含Purple,其中一个字符串可能是“Purple”。我知道有一种方法可以使用rawValue(等)根据枚举项的值来选择枚举项,但是名称是否有类似之处?这是枚举 enum Colors: Int { case White = 0 case Red case Orange case Yellow case Green case Cyan case Blue case Purple } 我将赞同这样的想
Purple
,其中一个字符串可能是“Purple”
。我知道有一种方法可以使用rawValue
(等)根据枚举项的值来选择枚举项,但是名称是否有类似之处?这是枚举
enum Colors: Int {
case White = 0
case Red
case Orange
case Yellow
case Green
case Cyan
case Blue
case Purple
}
我将赞同这样的想法,即枚举具有Int原始值,但现在您希望通过字符串查找案例。(如果您知道要按字符串查找案例,那么很难理解为什么不首先提供枚举字符串的原始值。但是,正如我所说,我将继续玩下去,只是为了好玩。) 所以。。。请记住,枚举与其他类型一样是对象类型。因此,您可以给它一个自定义方法 因此,您可以使用一种方法,从字符串数组开始,例如
[“白色”、“红色”、“橙色”…]
,使用查找字符串,从而为您提供一个索引号,并使用该索引号作为原始值以达到所需的大小写
enum Colors: Int {
case White = 0
case Red
case Orange
case Yellow
case Green
case Cyan
case Blue
case Purple
static func byString(s:String) -> Colors? {
let arr = ["White", "Red", "Orange", "Yellow", "Green", "Cyan", "Blue", "Purple"]
let ix = find(arr, s)
if ix == nil {
return nil
}
return Colors(rawValue:ix!)
}
}
现在你可以这样说:
let c = Colors.byString("Red")
我将赞同这样的想法,即枚举具有Int原始值,但现在您希望通过字符串查找案例。(如果您知道要按字符串查找案例,那么很难理解为什么不首先提供枚举字符串的原始值。但是,正如我所说,我将继续玩下去,只是为了好玩。)
所以。。。请记住,枚举与其他类型一样是对象类型。因此,您可以给它一个自定义方法
因此,您可以使用一种方法,从字符串数组开始,例如[“白色”、“红色”、“橙色”…]
,使用查找字符串,从而为您提供一个索引号,并使用该索引号作为原始值以达到所需的大小写
enum Colors: Int {
case White = 0
case Red
case Orange
case Yellow
case Green
case Cyan
case Blue
case Purple
static func byString(s:String) -> Colors? {
let arr = ["White", "Red", "Orange", "Yellow", "Green", "Cyan", "Blue", "Purple"]
let ix = find(arr, s)
if ix == nil {
return nil
}
return Colors(rawValue:ix!)
}
}
现在你可以这样说:
let c = Colors.byString("Red")
我将赞同这样的想法,即枚举具有Int原始值,但现在您希望通过字符串查找案例。(如果您知道要按字符串查找案例,那么很难理解为什么不首先提供枚举字符串的原始值。但是,正如我所说,我将继续玩下去,只是为了好玩。)
所以。。。请记住,枚举与其他类型一样是对象类型。因此,您可以给它一个自定义方法
因此,您可以使用一种方法,从字符串数组开始,例如[“白色”、“红色”、“橙色”…]
,使用查找字符串,从而为您提供一个索引号,并使用该索引号作为原始值以达到所需的大小写
enum Colors: Int {
case White = 0
case Red
case Orange
case Yellow
case Green
case Cyan
case Blue
case Purple
static func byString(s:String) -> Colors? {
let arr = ["White", "Red", "Orange", "Yellow", "Green", "Cyan", "Blue", "Purple"]
let ix = find(arr, s)
if ix == nil {
return nil
}
return Colors(rawValue:ix!)
}
}
现在你可以这样说:
let c = Colors.byString("Red")
我将赞同这样的想法,即枚举具有Int原始值,但现在您希望通过字符串查找案例。(如果您知道要按字符串查找案例,那么很难理解为什么不首先提供枚举字符串的原始值。但是,正如我所说,我将继续玩下去,只是为了好玩。)
所以。。。请记住,枚举与其他类型一样是对象类型。因此,您可以给它一个自定义方法
因此,您可以使用一种方法,从字符串数组开始,例如[“白色”、“红色”、“橙色”…]
,使用查找字符串,从而为您提供一个索引号,并使用该索引号作为原始值以达到所需的大小写
enum Colors: Int {
case White = 0
case Red
case Orange
case Yellow
case Green
case Cyan
case Blue
case Purple
static func byString(s:String) -> Colors? {
let arr = ["White", "Red", "Orange", "Yellow", "Green", "Cyan", "Blue", "Purple"]
let ix = find(arr, s)
if ix == nil {
return nil
}
return Colors(rawValue:ix!)
}
}
现在你可以这样说:
let c = Colors.byString("Red")
不,没有。为什么不给枚举字符串原始值呢?这正是他们的目的!使用Int原始值而不是字符串原始值还有其他一些真正好的理由吗?没有。为什么不给枚举字符串原始值呢?这正是他们的目的!使用Int原始值而不是字符串原始值还有其他一些真正好的理由吗?没有。为什么不给枚举字符串原始值呢?这正是他们的目的!使用Int原始值而不是字符串原始值还有其他一些真正好的理由吗?没有。为什么不给枚举字符串原始值呢?这正是他们的目的!使用Int原始值而不是字符串原始值还有其他一些真正好的理由吗?这正是我想要的。为什么?我知道我可以用一个案例陈述来做这件事,但我想学习swift,这正是我想知道的事情。枚举中的函数?我需要知道这件事!在我的书中有很多例子:如果使用可选绑定,它看起来会更快一些:如果让ix=find(arr,s){…
-很抱歉告诉你你已经知道的:)-或者返回颜色(rawValue:find(arr,s)?-1)
这正是我想要的东西。为什么?我知道我可以用case语句来实现这一点,但我想学习swift,这正是我想知道的事情。枚举中的函数?我需要知道这些东西!我的书中有很多例子:如果让它使用可选绑定,它看起来会更快速:ix=find(arr,s){…
–很抱歉告诉您您已经知道的:)–或者返回颜色(rawValue:find(arr,s)??-1)
这正是我想要的东西。为什么?我知道我可以用case语句来实现这一点,但我想学习swift,这正是我想知道的事情。枚举中的函数?我需要知道这些东西!我的书中有很多例子:如果让它使用可选绑定,它看起来会更快速:ix=find(arr,s){…
–很抱歉告诉您您已经知道的:)–或者返回颜色(rawValue:find(arr,s)??-1)
这正是我要找的东西。为什么?我知道我可以用case语句来实现这一点,但我想学习swift,而这正是我想知道的东西。枚举中的函数?我需要知道这些东西!我书中有很多例子:使用opti看起来会更快速一些