【发布时间】:2019-05-28 15:47:04
【问题描述】:
Scala 中有一种特殊的语法,它允许某种函数“赋值”或在 1 行中返回。我想知道 C++ 中是否有等价的东西。
Scala 示例:def abs(x: Int) = if (x >= 0) x else -x
【问题讨论】:
-
int abs(int x) { return x >= 0 ? x : -x; }? -
在大多数语言中被称为三元/条件表达式。搜索应该会产生答案。
-
它是像
auto abs = [](int x){ return x >= 0 ? x : -x; }这样的函数还是闭包? -
你的问题很不清楚。 1)您的代码中没有功能。 2)您的代码中没有分配。此外,一般来说,当您询问是否存在“等价物”时,您需要说明确切您想要等价的东西。首先,如果您只是用一种语言发布代码并希望将其翻译成另一种语言,那么只有精通两种语言的人才能回答,而如果您解释您想要什么,那么每个 C++ 专家都可以回答。其次,所有语言都有细微的差异,因此在 C++ 中不可能找到 100% 等价的东西
-
@1201ProgramAlarm:为了让你的代码是等价的,它需要是一个虚成员函数,因为OP的代码是一个非最终方法,而虚成员函数最接近于非最终方法。此外,类型必须是
std::int32_t,而不是int。并且返回类型是在 Scala 版本中推断出来的。