【问题标题】:How to call a function by using a number n如何使用数字 n 调用函数
【发布时间】:2023-02-08 02:16:43
【问题描述】:

我想要一个函数列表,并通过使用数字 n 来调用其中一个函数来调用列表的第 n 个函数。

我认为最好的方法是使用地图,但我可以立即发现一些我不知道如何解决此示例中的问题:

import 'dart:math';

void functionOne(x) => print("the randomly generated number is $x");
void functionTwo(x) => print("the inverse of the randomly generated number is ${1/x}");

var example = {0:functionOne(), 1:functionTwo()};

var intValue = Random().nextInt(2);
var biggerIntValue = Random().nextInt(100) + 1;

void main() {
  example[0](biggerIntValue);
}

我希望能够将参数传递给所述函数,并能够使用数字访问这些函数。我知道我可以创建一个巨大的函数并使用 if 语句来执行某些操作,但我想知道是否有任何预定的语法看起来比这更好:

import 'dart:math';

void largeFunction(funcNumber, x) {
  if (funcNumber == 0) {functionOne(x);}
  if (funcNumber == 1) {functionTwo(x);}
}

void functionOne(x) => print("the randomly generated number is $x");
void functionTwo(x) => print("the inverse of the randomly generated number is ${1/x}");

var intValue = Random().nextInt(2);
var biggerIntValue = Random().nextInt(100) + 1;

void main() {
  largeFunction(intValue, biggerIntValue);
}

感谢您阅读我的问题!

【问题讨论】:

    标签: dart


    【解决方案1】:

    地图的问题是您调用了函数表达式。尝试:

    var example = {0:functionOne, 1:functionTwo};
    

    下一个问题是

    example[0](biggerIntValue);
    

    抱怨 example[0] 可以为空。 我会把它改成:

    example[0]?.call(biggerIntValue);
    

    这样它只在整数是映射中的键时才调用某些东西。

    【讨论】:

    • 带有从 0 开始的连续整数键的 Map 也可能是 List,这将避免空检查的需要。
    猜你喜欢
    • 2022-01-09
    • 2023-03-11
    • 1970-01-01
    • 2016-08-06
    • 2020-08-25
    • 2023-03-16
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多