http://tieba.baidu.com/p/3546280977
手机党,看不清
提示的两个错误分别是:
cannot invoke 'sort' with an argument list of type'([String],(String, String) -> Bool)'
和
invalid character in source file
cannot invoke 'sort' with an argument list of type'([String],(String, String) -> Bool)'
和
invalid character in source file
这是源程序:
import Foundation
let arr = ["hello", "world", "hello2", "233","2world"]
func compare(s1: String, s2: String) -> Bool {
return s1 > s2
}
var arr2 = sort(arr, {(s1: String, s2: String) -> Bool in return s1 > s2})
import Foundation
let arr = ["hello", "world", "hello2", "233","2world"]
func compare(s1: String, s2: String) -> Bool {
return s1 > s2
}
var arr2 = sort(arr, {(s1: String, s2: String) -> Bool in return s1 > s2})
sort没有接受这两个类型参数的重载函数。。。你是要用sorted吧?
var arr = ["hello", "world", "hello2", "233","2world"]
func compare(s1: String, s2: String) -> Bool {
return s1 > s2
}
sort(&arr, {(s1: String, s2: String) -> Bool in return s1 > s2})
func compare(s1: String, s2: String) -> Bool {
return s1 > s2
}
sort(&arr, {(s1: String, s2: String) -> Bool in return s1 > s2})
文档翻译的有问题,最好对比着英文的看看,特别是代码部分。
英文文档里用的不是sort是sorted。这两个函数功能一样,用法不一样,sort没有返回值,第一个参数是inout的,所以第一个参数同时就是返回值;sorted是将排序好的放在了返回值。
你如果用sorted的话,就直接把你代码里的sort换成sorted就可以了。
如果想用sort的话,就是楼上说的那样。
英文文档里用的不是sort是sorted。这两个函数功能一样,用法不一样,sort没有返回值,第一个参数是inout的,所以第一个参数同时就是返回值;sorted是将排序好的放在了返回值。
你如果用sorted的话,就直接把你代码里的sort换成sorted就可以了。
如果想用sort的话,就是楼上说的那样。
-
ann2bad_lego: 回复 PCatZJ :再对层主补充一点,用sort排序是将排好的结果放在原有的数组里,所以数组不能用let声明为常量。而sorted是将排好的结果作为返回值,你可以用一个新的变量或常量来接收,这时候原来的数组是变量或者常量就无所谓了2015-1-24 22:50回复
- 我也说一句
我在贴吧