zoukankan      html  css  js  c++  java
  • 惰性求值的本质及支持

    惰性求值的本质是计算保存、计算构建和计算触发机制实现。

    MASConstraint的实现是其典型案例。(本结论为错)。

    [self.userIcon mas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.mas_equalTo(15);

            make.centerY.mas_equalTo(0);

    //        make.height.mas_equalTo(24);

    //        make.width.mas_equalTo(24);

        }];

    - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block {

        self.translatesAutoresizingMaskIntoConstraints = NO;

        MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];

        block(constraintMaker);

        return [constraintMaker install];

    }

    通常由语言底层和运行环境、编译器提供支持。

    函数式编程语言还提供惰性求值(Lazy evaluation,也称作call-by-need),是在将表达式赋值给变量(或称作绑定)时并不计算表达式的值,而在变量第一次被使用时才进行计算。

    某些编程语言缺省延迟表达式的求值,另一些提供函数或特殊语法来延迟求值。在 Miranda 和 Haskell 中,缺省延迟函数实际参数的求值。在很多其他语言中,可以使用特殊语法明确悬置计算来延迟求值(比如 Scheme 的 "delay" 或 "force"),更一般的通过把一个表达式包装在 thunk 中。表示这种明确延迟求值的对象叫做预期或承诺。

  • 相关阅读:
    CCF NOI1032 菱形
    CCF NOI1031 等腰三角形
    CCF NOI1030 角谷猜想
    CCF NOI1029 信息加密
    CCF NOI1028 判断互质
    CCF NOI1027 数字之和
    CCF NOI1026 表演打分
    CCF NOI1025 统计奖牌
    CCF NOI1024 因子个数
    CCF NOI1023 最大跨度
  • 原文地址:https://www.cnblogs.com/feng9exe/p/8659699.html
Copyright © 2011-2022 走看看