Cd
Cd[path]
将进程的当前工作目录切换到指定路径 path。目录不存在或无权限时抛出错误。
Print[Pwd[]]; # /home/user
Cd["projects/ksl"];
Print[Pwd[]]; # /home/user/projects/ksl
Cd[".."];
Print[Pwd[]]; # /home/user/projects
Cd["/non_existent_path"];
#? 无法规范化路径结果,因为: `No such file or directory (os error 2)`
Ceiling
Ceiling[n]
返回不小于 n 的最小整数,即向上取整。
Ceiling[5.3]; # => 6
Ceiling[-5.8]; # => -5
Ceiling[4]; # => 4
Ceiling[0]; # => 0
Chars
Chars[s]
将字符串 s 拆分为字符列表,每个元素为一个单字符字符串,完全支持 Unicode。
Chars["abc"]; # => {"a", "b", "c"}
Chars["你好👋,世界🌏!"];
# => {"你", "好", "👋", ",", "世", "界", "🌏", "!"}
Chars["你好\n世界\n🌍"];
# => {"你", "好", "\\", "n", "世", "界", "\\", "n", "🌍"}
KSL 字符串不解析转义序列,"\n" 被视为两个独立字符 \ 与 n。需要换行符时,可在源码中直接换行或使用 Unicode 码点 :10。
Chn
Chn[value]
Unicode 码点与字符之间的双向转换。
- 传入整数时,返回对应码点的单字符字符串。
- 传入单字符字符串时,返回其十进制 Unicode 码点。
Chn["你"]; # => 20320
Chn["a"]; # => 97
Chn[97]; # => "a"
Chn[19198]; # => "䫾"
Chn["❤️"];
#? `Chn` 需要一个字符或整数,但得到了 `"❤\u{fe0f}"`
Chn[1919812];
#? `1919812` 不是一个合法的十进制 Unicode 码点
Concat
Concat[item1, item2, ...]
将一系列字符串拼接为一个字符串,或将一系列列表拼接为一个列表。所有参数须为同一类型。
- 字符串拼接:返回合并后的字符串。
- 列表拼接:按顺序合并所有列表的元素,嵌套列表不会被展平。
Print[Concat["hello,", :10, "world!"]];
# hello,
# world!
Concat[{ 1 }, { 2, 3 }, { 4, { 5, 6 } }, { { 7 } }];
# => {1, 2, 3, 4, {5, 6}, {7}}
Concat[];
#? `Concat` 至少需要一个参数,但得到了 `0` 个
Cond
Cond[branches, fallback]
依次检查条件-结果对列表,返回首个条件为 :true 的对应结果。若所有条件都不满足,返回 fallback。
branches为{ condition, result }对组成的列表。- 短路求值:只有第一个匹配的分支会被执行。
Let[x, 8];
Cond[{
{ Less[x, 6], :low },
{ Less[x, 8], :mid },
}, :high]; # => :high
Let[x, 3];
Cond[{
{ Less[x, 6], :low },
{ Less[x, 8], :mid },
}, :high]; # => :low
Consume
Consume[thread]
等待线程完成并获取其返回值。当前执行会阻塞直到目标线程结束。每个线程只能被消耗一次。
- 首次成功调用时返回线程的返回值。
- 若线程已被消耗,返回
:err。
Block[
Thread[t1, { }, Block[ Sleep[1], Print["Finished 1"], 1 ]],
Thread[t2, { }, Block[ Sleep[0.5], Print["Finished 2"], 2 ]],
Print[Consume[t1]],
Print[Consume[t2]],
Print[Consume[t1]]
];
# Finished 2
# Finished 1
# 1
# 2
# :err
上例中 Finished 2 先出现,因为 t2 的睡眠时间更短。
主线程随后在 Consume[t1] 上阻塞,直到 t1 完成并输出 Finished 1。
第二次 Consume[t1] 返回 :err。
Cos
Cos[n]
计算弧度 n 的余弦值,结果在 $\left[-1, 1\right]$ 区间内。
Cos[0]; # => 1.0
Cos[3.1415926535898]; # => -1.0
Cos[ArcCos[0]]; # => 6.123233995736766e-17
Cos[-1]; # => 0.5403023058681398
Cosh
Cosh[n]
计算 n 的双曲余弦值,结果大于等于 1。
Cosh[0]; # => 1.0
Cosh[1]; # => 1.5430806348152437
Cosh[-1]; # => 1.5430806348152437
Eq[Cosh[1], Cosh[-1]]; # => :true