【问题标题】:compiling issue with atom and f#atom 和 f# 的编译问题
【发布时间】:2016-02-03 21:59:57
【问题描述】:

嘿,伙计们,我正在尝试编译这个名为 2v2 的函数,它可以将任意数乘以 2。我正在使用带有 ionide 的 Atom 进行编译,但是当我使用 f# 交互式运行它时,它给了我这个错误,说它没有'看不到功能的其余部分。有什么建议吗?

let times 2v2 n =
 let p = 2 in
 n*2;;
times 2v2 10;;



let times 2v2 n =;;
let times 2v2 n =;;
----------^^^
/stdin(4,11): error FS1156: This is not a valid numeric literal. Sample formats include 4, 0x4, 0b0100, 4L, 4UL, 4u, 4s, 4us, 4y, 4uy, 4.0, 4.0f, 4I.

【问题讨论】:

  • 您从哪里获得2v2 的代码? 2v2 假设是什么,一个变量,一个常量?还有let p = 2 是干什么用的?如果您想学习 F# 并拥有 Windows 操作系统,请使用免费的Visual Studio Community Edition 2015
  • 这不是 Ionide 问题 - 正如它所说,2v2 根本不是一个有效的写法。它以数字开头,因此编译器尝试将其解释为数字,但它不是任何类型的有效数字。你想做什么? (实际上,是的,那段代码很奇怪。)
  • 投票结束,因为问题是题外话 - 我不知道你想要什么;你的标题是关于文本编辑器的,你征求建议,但给我们一个错误,不知道是什么你试过了。
  • 你看过F# info tab吗?

标签: compilation compiler-errors f# f#-interactive f#-3.0


【解决方案1】:

如果我正确理解您的问题,您希望有一个名为times 2v2 的函数将其参数乘以 2。由于您的函数名称包含一个空格,因此您必须用双反引号将其括起来。例如:

let ``times 2v2`` n = 2 * n

并且在调用函数时也使用这些:

``times 2v2`` 10

如果没有双反引号,标识符不得以数字开头或包含空格。否则,编译器将很难确定它是在处理一个标识符还是多个标识符。

使问题代码有效的最简单方法是删除times2v2 之间的空格。不过,变量 p 将毫无用处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-06
    • 2010-09-29
    • 1970-01-01
    • 2022-10-23
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多