2015-06-05 3 views
1

Я пытаюсь создать метод в дротике, но столкнулся с стеной. Я смотрел, как .toUpperCase(); и .toLowerCase(); были сделаны. Метод, который я пытаюсь создать, это .capitalize();Создание метода capize в Dart

Я бы назвал этот метод следующим образом: String hello = "WORLD" .capitalize(); // Мир

Вот код, который я до сих пор

String capitalize() { 
return this.codeUnitAt(0).toUpperCase() + this.substring(1).toLowerCase(); 
} 

При запуске Строка приветствия = "МИР" .capitalize(); Я получаю следующую ошибку

[38;5;124m[2015-6-4 11:37:13.011] Class 'String' has no instance method 'capitalize'.

NoSuchMethodError: method not found: 'capitalize'
Receiver: "WORLD"
Arguments: [][0m

Я знаю, что могу вызвать функцию как String capitalize(String s) => s[0].toUpperCase() + s.substring(1); Но предпочел бы сохранить строку Манипуляция называет то же самое.

Спасибо и я признателен за любую помощь :)

+0

Для этого вам понадобится метод расширения примеров, чтобы сделать это, чего у Dart нет (пока). –

ответ

3

Вы не можете расширить класс String, как вы хотите. Просто использовать его как это:

capitalize("WORLD"); 
0

Да, не так, как JS, вы не можете просто изменить любой класс в Dart. Вы можете расширить его. Например. вы можете создать класс MyString с методом capitalize. Но я не думаю, что ты этого хочешь. Просто создайте библиотеку StringUtils.dart с помощью метода capitalize

+0

Вы не можете расширять базовые типы, такие как 'int',' double', 'num',' String' в Dart. 'MyString', вероятно, не является хорошей попыткой (как вы упомянули). –

+0

Да, может быть. благодаря – kelegorm