【问题标题】:Is there a better way to parse an int in Dart有没有更好的方法来解析 Dart 中的 int
【发布时间】:2013-02-23 17:29:48
【问题描述】:

这是关于 Dart 中的 int.parse 的几个问题...

我知道在 Dart 中,我们可以将字符串解析为 int 并使用类似的方法捕获异常:

try {
  n = int.parse(input.value);
  // etc.
} on FormatException {
  // etc.
}

(这很好。)

在文档中,对int.parse有如下描述:

int parse(String source, int radix, int onError(String source))

但是,当我尝试将 int.parse 与多个参数一起使用时,我收到了编辑器的投诉,称我使用了额外的参数。我误解了文档吗?例如,如何设置基数?

【问题讨论】:

  • int.parse(input.value, 10) 也许?你得到什么错误?
  • 当 int.parse 有多个参数时,编辑器会抱怨...

标签: dart


【解决方案1】:

在 Dart 2 中,int.tryParse 可用。

它为无效输入返回 null 而不是抛出。你可以这样使用它:

int val = int.tryParse(text) ?? defaultValue;

int.parse 中的 onError 参数已弃用。

【讨论】:

  • 谢谢,真的很有帮助!
  • 当我想启动一个文本小部件但依赖于其他变量/计算的变量在启动时可能仍然为空时特别有用,例如孩子:文本((派生数字*(int.tryParse(myController.userInputVal)??0)).toString())),
  • 什么是??什么意思?
【解决方案2】:

Int.parse 使用命名的可选参数。

API:

int parse(String source, {int radix, int onError(String source)})

参数列表中params 周围的{ } 表示这些是可选的、命名的 参数。 (如果您在参数列表中的参数周围有[ ],这些将是可选的位置参数)

示例用法:

int.parse("123");
int.parse("123", radix:16);
int.parse("123", onError:(source) => print("Source"));
int.parse("123", radix:16, onError:(source) => print(source));

【讨论】:

  • 啊!这完美地解释了它;鼠标悬停文档(我引用的)没有任何大括号。谢谢!
  • 我在 API 文档中添加了指向 int.parse 的链接。
  • onError 已弃用,不应使用。
猜你喜欢
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 2011-07-20
  • 2022-11-16
  • 2022-12-05
相关资源
最近更新 更多