Mojo中如何将StringRef转换为Int?CLI传参转换报错求助
在Mojo中将StringRef转换为Int(类似C++的std::stoi)
要解决StringRef转Int的编译错误,你需要先将StringRef转换为String类型,再调用String的to_int()方法——这就是Mojo里对应C++std::stoi的字符串转整数功能。
错误原因
你直接使用Int(vls)尝试转换StringRef,但Mojo的Int构造函数不支持直接接收StringRef作为参数,因此触发编译错误。另外需要注意:argv()[0]返回的是程序本身的路径,你应该取argv()[1]来获取用户传入的第一个命令行参数。
修正后的完整代码
from sys import argv fn fibonacci(n: Int) -> Int: if n == 0: return 0 elif n == 1: return 1 return fibonacci(n-1) + fibonacci(n-2) # 注:原代码的斐波那契实现逻辑有误,此处一并修正 fn main(): # 先检查是否传入了有效参数 if argv().len() < 2: print("请传入一个整数参数") return var vls: StringRef = argv()[1] print("vls = ", vls) # 核心转换步骤:StringRef转String后调用to_int() var n: Int = String(vls).to_int() var kys: Int = fibonacci(n) print(kys)
关键转换细节
- StringRef转String:通过
String(vls)将字符串引用转为可操作的String实例 - 调用转换方法:使用
to_int()完成字符串到整数的转换
你也可以拆分步骤让代码更清晰:
var str_val = String(vls) var n = str_val.to_int()
正确运行方式
编译运行时需要传入目标整数参数,示例命令:
mojo fibonacci.mojo 5
输出结果为斐波那契数列第5项的值:5
内容的提问来源于stack exchange,提问作者Quakumei
相关产品推荐
相关产品推荐

