角镖是否有重载方法的概念?

问题描述

我想拥有3个不同的函数,都称为“ AddField”,其中每个函数具有不同的参数。根据参数,语言将知道要调用哪个函数。如果将功能标记为“重载”,则Delphi会具有此概念。

  void addField(int tableID,fieldID) {
    addfield(tableID,fieldID,0)
  }

  void addField(int tableID,groupID) {
    addfield(tableID,groupID,size) {
    item = FieldItem();
    item.tableID = tableID;
    item.fieldID = fieldID;
    item.groupID = groupID;
    item.size = size;
    fieldlist.add(item);
  }

它们可以通过这种方式使用...

  void addClientFields(){
    addfield(tblIDClient,fldIDName,grpContact,30);
    addfield(tblIDClient,fldIDActive);
    addfield(tblIDClient,fldIDDate,grpSettings);
  }

解决方法

Dart没有Method overloading。您可以使用其他名称制作方法,也可以使用具有默认值的可选参数。

void addField(int tableID,fieldID,[int groupID = 0,int size = 0]) {
    item = FieldItem();
    item.tableID = tableID;
    item.fieldID = fieldID;
    item.groupID = groupID;
    item.size = size;
    fieldlist.add(item);
  }