本页展示了在原始类型之间进行转换以及从复合类型中获取这些类型的示例。
Int
String
// 为 String 类型定义一个新的扩展函数,返回 Int 类型的值// 注意:当 String 包含非数字字符时,会产生意想不到的结果!extends fun toInt(self: String):Int { // 将 String 转换为 Slice 用于解析 let string:Slice = self.asSlice(); // 一个用于存储累积数字的变量 let acc: Int = 0; // 循环直到 String 为空 while (!string.empty()) { let char:Int = string.loadUint(8); // 从 Slice 中加载 8 位(1 个字节) acc = (acc * 10) + (char - 48); // 使用 ASCII 表获取数值 // 注意,当起始字符串包含非数字字符时,这种方法会产生意想不到的结果 // 如果起始字符串包含非数字字符时,这种方法会产生意想不到的结果! } // 产生结果数字 return acc;} fun runMe() { let string:String = "26052021"; dump(string.toInt());}
let number: Int = 261119911; // 将 [number] 转换为字符串let numberString:String = number.toString(); // 将 [number] 转换为浮点字符串,// 其中传递的参数 3 是结果浮点字符串的指数 10^(-3),// 它可以是 0 到 76 之间的任何整数,包括两端let floatString:String = number.toFloatString(3); // 将作为硬币的[数字]转换为人类可读的字符串let coinsString:String = number.toCoinsString(); dump(numberString); // "261119911"dump(floatString); // "261119.911"dump(coinsString); // "0.261119911"
Struct
Message
Cell
Slice
struct Profit { big:String?; dict: map<Int, Int as uint64>; energy: Int;} message(0x45) Nice { maybeStr:String?;} fun convert() { let st = Profit{ big: null, dict: null, energy: 42, }; let msg = Nice{ maybeStr:"今天的消息!"}; st.toCell(); msg.toCell(); st.toCell().asSlice(); msg.toCell().asSlice();}
struct Profit { big:String?; dict: map<Int, Int as uint64>; energy: Int;} message(0x45) Nice { maybeStr:String?;} fun convert() { let stCell = Profit{ big: null, dict: null, energy: 42, }.toCell(); let msgCell = Nice{ maybeStr:"今日消息!"}.toCell(); Profit.fromCell(stCell); Nice.fromCell(msgCell); Profit.fromSlice(stCell.asSlice()); Nice.fromSlice(msgCell.asSlice());}