首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ERLANG + IF + BOOLEAN

ERLANG + IF + BOOLEAN
EN

Stack Overflow用户
提问于 2019-02-07 07:56:29
回答 3查看 1.4K关注 0票数 1
代码语言:javascript
复制
Boolean x = true;
int y = 1;
int z = 1;
if(y ==1 && x == true){
    z++;
    x = false;
}
else{
    z--;
    x = true;
}

我想在erlang做这个..。我该怎么做?(请注意,这是一个示例代码。我想做的是一个if语句中的两个条件&这个布尔功能)。任何帮助都是welcomed.Actually z& z++是不需要的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-08 20:15:22

如果您编写函数式语言,特别是Erlang,请避免考虑If语句,尽管Erlang大小写支持这一点。

总是想到模式匹配。

票数 2
EN

Stack Overflow用户

发布于 2019-02-07 08:38:52

您可以使用case语句。

*此示例将始终返回带有两个元素{Z,X}的元组。

代码语言:javascript
复制
case_statement() ->

  X  = true,
  Y  = 1,
  Z  = 1,

  case {Y, X} of
    {1, true} ->
      {Z + 1, false};
    _ ->
      {Z -1, true}
  end.

如果您需要使用确切的' If‘语句,下面是示例

代码语言:javascript
复制
if_statement() ->

  X  = true,
  Y  = 1,
  Z  = 1,

  if
    Y =:= 1 andalso X =:= true ->
      {Z +1, false};
    true ->
      {Z -1, true}
  end.
票数 3
EN

Stack Overflow用户

发布于 2019-02-08 00:58:24

代码语言:javascript
复制
Boolean x = true;
...
    x = false;

这在erlang是不可能发生的。erlang变量只能分配一次,这也意味着您不能在Erlang中执行var++var--

您可以在函数子句的头上使用所谓的守护符来对函数参数使用布尔筛选器。在警卫中,逗号在其他语言中的作用类似于&&,分号的作用类似于||

代码语言:javascript
复制
-module(my).
-compile(export_all).

            guard: Y==1 && X
         +----------+
         |          |  
         |          |
go(X, Y) when Y==1, X ->
      false;
go(_, _) ->
      true.

go_test() ->
    false = go(true, 1),
    true = go(false, 1),
    true = go(true, 20),
    all_tests_passed.

在外壳中:

代码语言:javascript
复制
~/erlang_programs$ erl
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.3  (abort with ^G)

1> c(my).       
my.erl:2: Warning: export_all flag enabled - all functions will be exported
{ok,my}

2> my:go_test().
all_tests_passed

3> 

按照Wotjek Surowka,go/2可以写得更简单,没有警卫。由于只有一个参数组合的结果是false,而所有其他参数组合都生成一个true结果,所以可以编写:

代码语言:javascript
复制
go(true, 1) ->
    false;
go(_, _) ->
    true.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54568659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档