首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Xcode10.2.1/swift 4.2中的'iterateEnum‘函数按照枚举列表中指定的特定顺序对数组中的字符串值进行排序

在Xcode10.2.1/swift 4.2中,'iterateEnum'函数可以按照枚举列表中指定的特定顺序对数组中的字符串值进行排序。下面是一个示例代码:

代码语言:txt
复制
enum SortOrder: Int {
    case ascending = 1
    case descending = -1
}

func iterateEnum<T: Hashable>(_: T.Type) -> AnyIterator<T> {
    var i = 0
    return AnyIterator {
        let next = withUnsafeBytes(of: &i) { $0.load(as: T.self) }
        if next.hashValue != i { return nil }
        i += 1
        return next
    }
}

let strings = ["apple", "banana", "cherry", "date"]
let sortOrder = SortOrder.ascending

let sortedStrings = strings.sorted {
    (str1, str2) -> Bool in
    let index1 = Array(iterateEnum(SortOrder.self)).firstIndex(of: sortOrder)!
    let index2 = Array(iterateEnum(SortOrder.self)).firstIndex(of: sortOrder)!
    return str1 < str2
}

print(sortedStrings)

在上述代码中,我们定义了一个枚举类型SortOrder,用于指定排序的顺序。然后,我们定义了一个iterateEnum函数,该函数可以迭代枚举类型的所有值。接下来,我们创建了一个字符串数组strings和一个排序顺序sortOrder。最后,我们使用sorted函数对字符串数组进行排序,并根据指定的排序顺序进行比较。

这个示例中的排序顺序是升序(ascending),你可以根据需要修改SortOrder枚举中的值来指定其他排序顺序。此外,你还可以根据实际情况修改字符串数组strings中的值。

请注意,这个示例中没有提及任何腾讯云相关产品,因为与问题无关。如果你有其他关于云计算或IT互联网领域的问题,我将很乐意为你提供帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift基础 嵌套

排序方法 Swift标准库提供了一个名为sorted(by:)方法,该方法根据您提供排序闭包输出已知类型数组进行排序。...下面的闭包表达式示例使用sorted(by:)方法按反向字母顺序String数组进行排序。...这个例子是一个’ String ‘数组进行排序,因此排序闭包需要是一个类型为’ (String, String) -> Bool ‘函数。...在sorted(by:)方法情况下,从正在进行排序事实可以清楚地看出闭包目的,读者可以安全地假设闭包可能与String一起工作,因为它有助于字符串数组进行排序。...您通过在传递给map(_:)闭包编写代码来指定映射性质和返回类型。 将提供闭包应用于每个数组元素后,map(_:)方法返回一个包含所有新映射数组顺序与原始数组相应相同。

11100

swift4.0语法杂记(精简版)

拼接字符串时格式变化 假设在某些特定地方需要输出特定位数字符,比如或时间输出,就需要使用占位符来调整字符串格式。...数组是有序数据集,集合是无序无重复数据集,而字典则是无序键值集。 数组使用有序列表存储同一类型多个。相同可以多次出现在一个数组不同位置。...格式如下: func 函数名(参数列表)-> 返回类型 { 代码块 return 返回 } func表示关键字,多个参数列表之间用逗号隔开,也可以没有参数。使用->指向返回类型。...要如何来完成呢? ? 如果按照上面的写法就会报错,可以按住option键查看,参数默认是不可变。 而且就算可行,做到也是传递。...十七、枚举 1、定义 在swift枚举使用是由enum关键字来创建枚举枚举所有成员都放在一大括号里面。它为一组相关定义一个共同类型。使用case关键字来定义一个新枚举成员

15.1K90

C# SortedList类概念和示例

SortedList 在内部维护两个数组以将数组存储到列表;即,一个数组用于键,另一个数组用于相关联。每个元素都是一个可作为 DictionaryEntry 对象进行访问键/。...SortedList 元素将按照特定 IComparer 实现(在创建 SortedList 时指定)或按照键本身提供 IComparable 实现并依据键来进行排序。...因此,当在 SortedList 添加或移除元素时,特定键/索引可能会更改。 由于要进行排序,所以在 SortedList 上操作比在 Hashtable 上操作要慢。...下面的代码演示如何使用 Values 属性从已排序字符串列表按索引检索: string v = mySortedList.Values[3]; SortedList 作为键...此示例演示如何排序列表枚举键和,以及如何使用 Keys 属性和 Values 属性分别枚举键和。 最后,此示例演示了 Remove 方法。

1.5K20

Swift基础 集合类型

这样做使您更容易代码进行推理,并使Swift编译器能够优化您创建集合性能。 数组(Arrays) 数组将相同类型存储在有序列表。相同可以在不同位置多次出现在数组。...Sets 集合在集合存储相同类型不同,没有定义顺序。当项目顺序不重要时,或者当您需要确保项目只出现一次时,您可以使用集合而不是数组。...SwiftSet类型没有定义顺序。要按特定顺序迭代集合,请使用sorted()方法,该方法将集合元素作为使用<运算符排序数组返回。...每个都与一个唯一键相关联,该键充当字典标识符。与数组项目不同,字典项目没有指定顺序。...要按特定顺序迭代字典键或,请在其keys或values属性上使用sorted()方法。

9000

C++ Qt开发:使用关联容器类

1.1.3 应用案例 正如如下代码所示,我们提供了QMap字典类型关联数组,该数组中一个键映射对应一个,QMap容器是按照顺序存储,如果项目中不在意顺序可以使用QHash...以下是关于 QSet 概述: 1.3.1 特点和用途 无序性: QSet 元素是无序,没有特定排列顺序。 唯一: 每个在 QSet 是唯一,不允许重复。...1.4.3 QMap拆分为QList 这段代码演示了如何使用 QMap 存储键值,并分别将键和存储到两个 QList 。首先,通过 Display 函数输出了 QMap 键值。...首先,定义了一个包含整数 QList,通过 std::sort 函数按从大到小顺序列表进行排序,并使用 Display 函数输出排序结果。...在结构体排序情况下,使用了自定义排序方法 devListSort,该方法按照结构体 uuid 成员进行升序排序

31110

Swift解读专题一——Swift2.2语言预览

三、常量与变量         常量和变量是编程语言中最基础两类数据类型,常量可以理解为为某个起一个特定名字,常量通常提供给开发者用于某些只赋值一次但却在程序多处使用量值。...时,就代表条件为真,在Swift语言中则不同,if选择语句中条件必须为Bool类型,因此,对于某些可以为空Swift中提供了optional类型,这种类型相当于其他实际类型进行了包装,如果有...个人见解,Swift函数设计综合了上面两种语言有事,参数列表函数名分离,简化了函数,同时,参数列表中保留了每个参数名称,使开发者在调用函数时更加直观。         ...在Objective-C,如果需要某个函数返回一组,开发者通常会需要使用字典或者数组,这样做有一个问题,在调用此函数时,返回意义十分模糊,开发者需要明确知道其中数据顺序与意义。...,并且让指针指向下一个参数地址     }     va_end(list);//关闭列表指针 } 在Swift语言中,实现这样函数要简单多,通过...来进行参数省略,并且将这些省略函数包装为数组传入函数内部

2K20

Swift闭包(Closures)

sorted 函数(The Sorted Function) Swift 标准库提供了sorted函数,会根据您提供基于输出类型排序闭包函数将已知类型数组进行排序。...下面的闭包表达式示例使用sorted函数一个String类型数组进行字母逆序排序,以下是初始数组: let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella...对于字符串字符来说,“大于” 表示 “按照字母顺序较晚出现”。 这意味着字母"B"大于字母"A",字符串"Tom"大于字符串"Tim"。...如果您在闭包表达式中使用参数名称缩写,您可以在闭包参数列表中省略定义,并且对应参数名称缩写类型会通过函数类型进行推断。...具体映射方式和返回类型由闭包来指定。 当提供给数组闭包函数后,map方法将返回一个新数组数组包含了与原数组一一映射后

1.9K30

窥探Swift函数与闭包应用实例

参数列表也有很多好用使用方式,接下来详细介绍一下函数形参列表。 (1) 默认形参是常量(let) 在函数形参列表,默认形参是常量。也就是相当于用let关键字形参进行修饰了。...如果传入是引用的话,在函数进行修改的话,那么出了函数,这个被修改是可以被保留。在Swift也是可以,不过你需要使用inout关键字修饰形参,并且在使用函数时,用&来修饰。...但是Objective-C这么看似古老语言中就不支持给形参指定初始,在Swift这门现代编程语言中是支持这一特性。默认参数要从参数列表后开始为参数指定默认,不然就会报错。...4.函数嵌套 我们可以把 3 代码使用函数嵌套进行重写,在Swift是支持函数嵌套。 所以可以吧3.1和3.2函数放到3.3函数,所以我们可以对上述代码使用函数嵌套进行重写。...通过上面的代码段以及运行结果,我们不难看出,map闭包函数功能就是对数组每一项进行遍历,然后通过映射规则对数组每一项进行处理,最终返回结果是处理后数组(以一个新数组形式出现)。

1.9K50

C#3.0新增功能09 LINQ 标准查询运算符 04 运算

通过指定第二个排序条件,您可以对每个主要排序组内元素进行排序。 下图展示了一系列字符执行按字母顺序排序操作结果。 ? 下节列出了对数据进行排序标准查询运算符方法。...Enumerable.ReverseQueryable.Reverse 查询表达式语法示例 主要排序示例 主要升序排序 下面的示例演示如何在 LINQ 查询中使用 orderby 子句按字符串长度对数组字符串进行升序排序...下面的示例演示如何在 LINQ 查询中使用 orderby descending 子句按字符串第一个字母字符串进行降序排序。...次要升序排序 下面的示例演示如何在 LINQ 查询中使用 orderby 子句对数组字符串执行主要和次要排序。...where Enumerable.WhereQueryable.Where 查询表达式语法示例 以下示例使用 where 子句从数组筛选具有特定长度字符串

9.6K20

Apple Swift编程语言入门教程

Note 练习 使用 () 来包含一个浮点数计算到字符串,并包含某人名字来问候。 创建一个数组和字典使用方括号 "[]" ,访问其元素则是通过方括号索引或键。...可使用 for-in 来迭代字典每个元素,提供一名字来使用每个键值。...构造范围忽略最高,而用 ... 构造范围则包含两个。 5 函数与闭包 使用 func 声明一个函数。调用函数使用名字加上小括号参数列表使用 -> 分隔参数名字和返回类型。...你可以写一个闭包而无需名字,只需要放在大括号即可。使用 in 到特定参数和主体返回。...在如上例子,原始类型是 Int 所以可以只指定第一个原始。其后原始都是按照顺序赋值。也可以使用字符串或浮点数作为枚举原始

2K30

万字长文|Swift语法全面解析|附示例

使用字符,可通过 for-in 循环来遍历字符串,获取字符串每一个字符字符串是一种构建新字符串方式,可以在其中包含常量、变量、字面量和表达式。...字典是无序键值集。 集合可变性,数组(Arrays),集合(Sets),集合操作,字典 数组使用有序列表存储同一类型多个。相同可以多次出现在一个数组不同位置。...集合用来存储相同类型并且没有确定顺序。当集合元素顺序不重要时或者希望确保每个元素只出现一次时可以使用集合而不是数组。...Swift 内置支持检查 API 可用性,编译器使用 SDK 可用信息来验证我们代码中使用所有 API 在项目指定部署目标上是否可用。...枚举语法,使用 Switch 语句匹配枚举枚举成员遍历,关联,原始(默认),递归枚举(indirect) 可以定义 Swift 枚举来存储任意类型关联,每个枚举成员关联类型可以各不相同

3.3K21

MySQL数据类型与优化

5、MySQLBLOB和TEXT列进行排序与其他类型是不同:它只对每个列最前max_sort_length字节而不是整个字符串排序。...枚举列可以把一些不重复字符串存储成一个预定义集合。MySQL在存储枚举时非常紧凑,会根据列表数量压缩到一个或两个字节。...MySQL在内部会将每个列表位置保存为整数,并且在表.frm文件中保存"数字-字符串"映射关系"查找表"。 2、枚举字段是按照内部存储整数而不是定义字符串进行排序。...绕过这种限制方式是按照需要顺序来定义枚举列,另外也可以在查询中使用FIELD()函数显式地指定排序顺序,但这会导致MySQL无法利用索引消除排序,如果定义时候就是按照字母顺序,就没有那么做必要了。...4、由于MySQL把每个枚举都保存为整数,并且必须进行查找才能转换为字符串,所以枚举列有一些开销,通常枚举列都比较小,所以开销还可以控制,在特定情况下,把CHAR/VARCHAR列与枚举进行关联可能会直接比关联

1.5K10

深入探索Java集合框架

List接口继承自Collection接口,并添加了一些特定列表操作,如获取指定位置元素、替换元素、获取列表列表等。...优先级队列元素根据它们自然顺序进行排序,或者根据传递给队列构造函数Comparator进行排序,具体取决于所使用构造方法。优先级队列不允许使用null元素。...此链接列表定义了迭代顺序,即按照将键-插入到映射中顺序(插入顺序)或访问顺序进行迭代。因此,LinkedHashMap在迭代访问方面比HashMap更快,但需要更多内存。...EnumMap所有键都必须是单个枚举类型枚举。它在内部使用一个位向量或数组来表示映射,这使得它在存储和访问方面都非常高效。但是,它只能用于枚举映射,并且不允许使用null键。...例如,我们可以使用Arrays类sort()方法对数组进行排序,或使用Collections类shuffle()方法随机打乱集合元素顺序

12310

IOS-swift5.1快速入门之旅

在全局范围编写代码用作程序入口点,因此您不需要main()函数。您也不需要在每个语句末尾写分号。 本导览通过向您展示如何完成各种编程任务,为您提供了足够信息来开始在Swift编写代码。...您可以使用for- in通过提供一用于每个键值名称来迭代字典项目。字典是无序集合,因此它们键和以任意顺序迭代。...<使省略了其上限值范围内,并用...做既包括范围。 功能和闭包 使用func声明函数。通过在括号中使用参数列表跟随其名称来调用函数使用->参数名称和类型从函数返回类型分开。...默认情况下,Swift会将原始从零开始并每次递增1,但您可以通过显式指定来更改此行为。在上面的示例,Ace显式给出了原始1,其余原始顺序分配。...您还可以使用字符串或浮点数作为枚举原始类型。使用该rawValue属性可以访问枚举案例原始使用init?(rawValue:)初始化程序从原始创建枚举实例。

2K20

算法与数据结构(十七) 基数排序(Swift 3.0版)

我们还是以[62, 88, 58, 47, 62, 35, 73, 51, 99, 37, 93]这个序列为例,使用基数排序方式该序列进行升序排列。...(3)、在第二步生成数组基础上再以十位数为基数入桶。入桶完毕后,再次按照编号顺序将数值取出。...当然本篇博客我们依然使用Swift面向对象语言来给出相应代码实现。下方代码实现主要是按照上述示意图步骤,接下来我们就来循序渐进来看一下代码具体实现。...4、获取数值特定位数 下方函数就是获取某数字特定位数,你可以通过取余以及求模方式来获取,以239为例,我想获取十位数值3,那么我们需要将239执行Int((239%100)/10), 通过该操作...但是在下方函数并未采用此方法,而是采用将数字转换成字符串,然后将字符串转换成字符数组,这样我们就可以轻松取出数字任何一位。下方就是具体代码实现: ?

61160

JS轻松遍历对象属性几种方式

自身可枚举属性 Object.keys() 方法会返回一个由一个给定对象自身可枚举属性组成数组数组属性名排列顺序使用 for...in 循环遍历该对象时返回顺序一致 。...Object.values() 返回属性 Object.values()方法返回一个给定对象自身所有可枚举属性数组顺序使用for...in循环顺序相同 ( 区别在于 for-in 循环枚举原型链属性...在ES5和早期标准,根本没有指定属性顺序。 然而,从ES 6开始,属性顺序是基于一个特殊规则,除非特指按照时间排序。...数字:当属性类型时数字类型时,会按照数字从大到小顺序进行排序字符串:当属性类型是字符串时,会按照时间先后顺序进行排序; Symbol:当属性类型是Symbol时,会按照时间先后顺序进行排序...Object.entries()最适用于数组解构赋值,其方式是将键和轻松分配给不同变量。 此函数还可以轻松地将纯JS对象属性映射到Map对象

13.5K20

Swift 3到5.1新特性整理

toc Swift 5.1 Swift 5.0 Result类型 Raw string 自定义字符串 动态可调用类型 处理未来枚举 从try?...协议 多行字符串字面量 改进Key-value编码keypaths 改进字典函数 字符串又变成了Collection类型 单侧区间 Swift 3.1 扩展限制优化 嵌套类型支持泛型 序列(Sequences...[a-z]+"# 自定义字符串 SE-0228提案改进了Swift字符串,让其更高效和自由。...你可以将其用在结构体,枚举,类和协议上 如果你使用withKeywordArguments而不是withArguments,你仍然按照无参数标签方式使用,只是key是空字符串。...: 带条件计数 SE-0220, 引入了count(where:)函数,来计算遵循Sequence列表满足条件成员个数。

4.6K20

Swift开发规范-修订版

最近利用了空余时间,之前版本进行了完善,加入了代码示例及编译效率规约等等,并且考虑到读者某些规约有些疑惑,也为部分规约增加了说明,推出新版本--《Swift开发规范-修订版》。...,与名称之间留有空格; 【强制】代码空格出现地点 注释符号与注释内容之间有空格; 类继承,参数名和类型之间等,冒号前面不加空格,但后面跟空格; 任何运算符前后有空格; 表示返回 -> 两边; 参数列表...、数组、元祖、字典里逗号后面有一个空格; 【强制】禁止使用无用分号; 【强制】方法之间空一行; 【强制】重载声明放在一起,按照参数多少从少到多向下排列; 【强制】每一行只声明一个常、变量; 【强制...,按照按照参数多少从少到多排序; 3、返回 -> 两遍增加空格; 4、参数名与类型之间空格; 5、如果大括号内为空,则直接简写为{},括号内不换行; 6、if 后面的 else\else if...【推荐】在代码灵活使用一些地标注释,如MARK、FIXME、TODO,当同一文件存在多种类型定义或者多种逻辑时,可以使用Mark进行分组注释,方便通过Xcode顶部面包屑进行切换; 代码示例: /

1.7K50
领券