我正在试着通过调换学校给我的C编程练习题来学习这Dart language个练习.

我们C池的第一个练习是到write a function 100 that prints the alphabet in lowercase; it is forbidden to print the alphabet directly.

在POSIX C中,简单的解决方案是:

#include <unistd.h>

void    print_alphabet(void)
{
    char    c;

    c = 'a';
    while (c <= 'z')
    {
        write(STDOUT_FILENO, &c, 1);
        c++;
    }
}

int     main(void)
{
    print_alphabet();
    return (0);
}

然而,据我所知,当前版本的DART(1.1.1)没有一种简单的处理字符的方法.我想出的(我的第一个版本)最多是这样的:

void  print_alphabet()
{
  var c = "a".codeUnits.first;
  var i = 0;

  while (++i <= 26)
  {
    print(c.toString());
    c++;
  }
}

void main() {
  print_alphabet();
}

它将每行一个字符的ASCII值打印为字符串("97"…"122").不是我想要的…

我正在努力寻找做这件事的合适方法.但是,缺少像C中那样的char类型,这让我作为一个初学者有点困难!

推荐答案

DART没有字符类型.

要将代码点转换为字符串,请使用String构造函数String.fromCharCode:

int c = "a".codeUnitAt(0);
int end = "z".codeUnitAt(0);
while (c <= end) {
  print(String.fromCharCode(c));
  c++;
}

对于这样简单的东西,如果你不介意换行的话,我会用"print"而不是"stdout".

此外,还有:

int char_a = 'a'.codeUnitAt(0);
print(String.fromCharCodes(new Iterable.generate(26, (x) => char_a + x)));

或者,使用较新的列表文字语法:

int char_a = 'a'.codeUnitAt(0);
int char_z = 'z'.codeUnitAt(0);
print(String.fromCharCodes([for (var i = char_a; i <= char_z; i++) i]));

Dart相关问答推荐

DART列表由以奇怪方式链接的列表(即二维数组)组成

Flutter中TextFieldForm中的字母间距

Dart:使用正则表达式从字符串中删除空格

如何在 Flutter Web 中使用 Skia/CanvasKit?

Flutter 中的 authStateChanges

Flutter热重新加载和热重启不工作

如何通过 foreach 函数避免在 dart Map 中使用 await 键

Flutter web url 导航

如何垂直对齐行元素?

Flutter有向图.我可以将CustomPainter类与自定义小部件一起使用吗?

如何从JSON对象获取格式化/缩进的JSON字符串?

判断Dart中是否提供了可选参数

如何使用 Dart 动态加载 HTML 并插入我的网页?

如何在 Flutter 中让 Android 状态栏变亮

在 Dart 中使用固定长度列表有性能优势吗?

如何在 Dart 中创建 StreamTransformer?

何时使用polymer点击或点击?

具有 Maps 的 Null 感知运算符

Dart 如何匹配然后替换正则表达式

如何在 base64 中编码 Dart 字符串?