Вы можете сначала проверить в файле компонента, если вызовы getTraining и getTrainingDetails возвращают правильные значения, могут быть добавлены журналы консоли. (Я думаю, что правильное место для таких вызовов - внутри ngOnInit, хотя конструктор также работает).
this.training=service.getTraining();
this.trainingdetails=service.gettrainingdetails()
Если это становится нулевым, попробуйте переместить объявления переменных - обучения и обучения с подробностями внутрь методов - getTraining и gettrainingdetails до возврата или внутри конструктора для TrainingService. Не совсем уверен из приведенного выше кода, где он определен. Если это в отдельном файле, добавьте ключевое слово экспорта прежде.
Если Вы хотите протестировать, содержит ли строка символ, можно использовать regex:
(re-find #"\." astr)
Или:
(some #(= \. %) astr)
Или:
(contains? (into #{} astr) \.)
Или можно использовать includes?
от clojure.contrib.seq-utils, который делает это также.
Clojure уже имеет читателя, который знает, как отличить ints и удваивается, поэтому если Вы уверены, что Ваша строка только имеет числа в ней, можно использовать ее. (Будьте осторожны, хотя, это читает что-либо, не просто числа. Это потенциально опасно. Не используйте это, если существует шанс, Ваша строка имеет что-то другое, чем число.)
Примечание, Clojure также обрабатывает случай, где целое число является слишком большим для вписывания в собственный компонент int
без переполнения. Если Вы хотите проанализировать целые числа, Вы могли бы хотеть посмотреть на функцию bigint, а не parseInt
.
user> (class (read-string "2.5"))
java.lang.Double
user> (class (read-string "2"))
java.lang.Integer
user> (class (read-string "2000000000000"))
java.math.BigInteger
Если Ваша функция является предикатом, распространено в Clojure назвать его decimal?
вместо is-decimal
. Ваша функция на самом деле является большим количеством синтаксического анализатора числа, так лично я назвал бы его parse-number
или string-to-number
.
Непротестированный:
(if (> 0 (. astr (indexOf (int \.))))
хорошо, если это действительно возвращается-1, если это приводит к сбою затем проверку на-1, и возвратите false, если это