这是我们在mojo仓库的第二个PR, 实现了String
的比较大小功能, 比较字符串的大小操作在很多场景都有用, 比如排序, 本次提交耗时比较久, 上游对待PR的态度比较认真, 这个PR也吸引了很多开发者的目光, 给出了很多有用的意见, 以下列出核心功能点:
@always_inline
fn _str_compare(str1: String, str2: String) -> Int:
var min_len = len(str1) if len(str1) < len(str2) else len(str2)
var cmp = memcmp(str1._as_ptr(), str2._as_ptr(), min_len)
if cmp < 0:
return -1
elif cmp > 0:
return 1
# now check length for str1 and str2
if len(str1) == len(str2):
return 0
elif len(str1) > len(str2):
return 1
else:
return -1
使用memcmp函数进行字符串的比较, 如果str1 == str2
则返回0
, 如果str1 < str2
则返回-1
, 如果str1 > str2
则返回1