ddip1043短方法语法

原文

概述

DIP为函数定义提出了短语法.新语法使用=>分隔函数头和函数体来代替左大括号和右大括号:

int add(int x, int y) pure => x + y;

已在D语言中作为预览实现

原理(一致/简洁)

D语言已支持函数字面的短语法.如:

const succ = (int x) => x + 1;
//等价
const succ = function(int x) { return x + 1; };

细微的更改语言,可为函数定义实现类似语法,使函数字面和函数定义更加统一.

考虑简单InputRange,它产生一系列T不包括一端([from,to))s.无建议语法的D中的实现是14行:

struct LongerExclusiveRange(T)
{
    T from, to;
   invariant(from <= to);
   bool empty() {
      return from == to;
   }
   void popFront() {
      ++from;
   }
   T front() {
      return from;
   }
}

提议特性实现只有8行:

struct ExclusiveRange(T)
{
    T from, to;
   invariant(from <= to);
   bool empty() => from == to;
   auto popFront() => ++from;
   T front() => from;
}

用该语法简化函数为动作.
这样,可以带任意但具有代表性的区间组合.

auto doesWork()
    => iota(1, 100)
        .map!(x => x + 1)
        .filter!(x => x > 4)
        .each!writeln;

由于构造器和析构器不能有返回值,实现应拒绝使用短语法实现他们,并提供有意义的错误消息.

posted @   zjh6  阅读(12)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示