加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala相当于函数中的C静态变量

发布时间:2020-12-16 19:11:15 所属栏目:安全 来源:网络整理
导读:我对 Scala很新,偶然发现以下问题: 什么是Scala相当于函数的静态变量? void foo(){ static int x = 5; x++; printf("%d",x);} 编辑: 我想要实现的是一种函数调用计数器 – 我想检查我的函数执行了多少次,同时限制了这个计数器的可见性,以便它不能从外部修
我对 Scala很新,偶然发现以下问题:

什么是Scala相当于函数的静态变量?

void foo()
{
    static int x = 5;
    x++;
    printf("%d",x);
}

编辑:

我想要实现的是一种函数调用计数器 – 我想检查我的函数执行了多少次,同时限制了这个计数器的可见性,以便它不能从外部修改.

解决方法

这是一段具有类似效果的代码:

scala> object f extends Function0[Unit] {
     |   var x = 0;
     |   def apply = {
     |     x = x + 1;
     |     println(x);
     |   }
     | }
defined module f

scala> f()
1

scala> f()
2

虽然我必须强调这是一个非常糟糕的做法,因为它杀了referential transparency.

如果你真的需要这种行为,请考虑这个:

type State = Int

def f(state: State) = {
 val newState = state + 1
 println(state);
 newState;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读