【问题标题】:Scala function assignment equivalent in C++C++ 中等效的 Scala 函数赋值
【发布时间】: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 版本中推断出来的。

标签: c++ scala syntax


【解决方案1】:

你可以使用三元运算符:

int xyz(int x) { return x >= 0 ? x : -x; }

更多信息请见here

【讨论】:

  • 为了让你的代码是等价的,它需要是一个虚成员函数,因为OP的代码是一个非最终方法,而虚成员函数是最接近非最终方法的等价物最后的方法。此外,类型必须是std::int32_t,而不是int。并且返回类型是在 Scala 版本中推断出来的。
猜你喜欢
  • 2012-08-28
  • 2011-12-10
  • 2013-04-19
  • 1970-01-01
  • 2016-01-08
  • 2011-05-06
  • 2020-09-18
  • 1970-01-01
  • 2016-08-29
相关资源
最近更新 更多