Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift apple文档中的max(by:)运算符示例不按所述工作?_Swift_Max_Documentation_Combine - Fatal编程技术网

Swift apple文档中的max(by:)运算符示例不按所述工作?

Swift apple文档中的max(by:)运算符示例不按所述工作?,swift,max,documentation,combine,Swift,Max,Documentation,Combine,我是新来的联合收割机/现在正在学习操作员, 我在apple developer文档中遵循了这个示例,但在Playdey中的输出是不同的 //网站显示 enum Rank: Int { case ace = 1, two, three, four, five, six, seven, eight, nine, ten, jack, queen, king } let cards: [Rank] = [.five, .queen, .ace, .eight, .jack] cancella

我是新来的联合收割机/现在正在学习操作员, 我在apple developer文档中遵循了这个示例,但在Playdey中的输出是不同的 //网站显示

enum Rank: Int {
    case ace = 1, two, three, four, five, six, seven, eight, nine, ten, jack, queen, king
}

let cards: [Rank] = [.five, .queen, .ace, .eight, .jack]
cancellable = cards.publisher
    .max {
        return  $0.rawValue > $1.rawValue
    }
    .sink { print("\($0)") }

// Prints: "queen"

我的游乐场展示:

import Combine

enum Rank: Int {
    case ace = 1, two, three, four, five, six, seven, eight, nine, ten, jack, queen, king
}

let cards: [Rank] = [.five, .queen, .ace, .eight, .jack]
cards.publisher
    .max {
        return  $0.rawValue > $1.rawValue
    }
    .sink { print("\($0)") }
//Prints: "ace"
我试图解决“数组中最常见的名称”问题,但它仅在使用“”查找最大值时有效/

import Combine

var subscriptions = Set<AnyCancellable>()
let nameArray: [String] = ["bob", "james", "bob", "james", "lee", "bob", "bob"]

nameArray
    .filter{ !$0.isEmpty }
    .reduce(into: [String: Int]()){ $0[$1] = ($0[$1] ?? 0) + 1 }
    .publisher
    .max {$0.1 < $1.1 }
    .sink{print($0)}
    .store(in: &subscriptions)

//Prints: "(key: "bob", value: 4)" 
导入联合收割机
var subscriptions=Set()
let nameArray:[字符串]=[“鲍勃”、“詹姆斯”、“鲍勃”、“詹姆斯”、“李”、“鲍勃”、“鲍勃”]
名称数组
.filter{!$0.isEmpty}
.reduce(转换为:[String:Int]()){$0[$1]=($0[$1]??0)+1}
出版商
.max{$0.1<$1.1}
.sink{print($0)}
.store(位于:&订阅中)
//打印:“(键:“bob”,值:4)”
苹果的文件有可能是错的吗?
还是我做错了什么?

我想你可能是对的,这是苹果文档中的一个错误。
max
的参数说明如下:

正在增加订单

一个闭包,它接收两个元素,如果它们的顺序是递增的,则返回true

您会注意到,增加顺序意味着
$0.rawValue
将小于
$1.rawValue
。示例代码改为使用
,但仍然希望打印
queen
——我觉得这不对。如果我将运算符翻转为
,请参见。请注意以下解释:

您可以提供一个函数,并手动决定参数的顺序是否更小–更大,返回Bool以指示是否是这种情况

(我的斜体字)

但你是说

return  $0.rawValue > $1.rawValue
因此,您没有正确回答这些产品是否订购较小或较大的问题。相反,说

return  $0.rawValue < $1.rawValue
返回$0.rawValue<$1.rawValue

您需要使用
@Leo Dabus,因此苹果文档中的示例是错误的?/感谢您对默认值的建议Yes是错误的。如果您检查相同的数组方法,您将看到正确的示例。感谢您的快速回复,我试图更新您的答案,但我是新手,没有“15”的声誉,我只是提交了反馈/感谢您的回复,我阅读了您共享的链接/因此苹果文档中的示例可能是错误的?