История изменений
Исправление firkax, (текущая версия) :
Если у тебя строка неявно привелась к числу и из-за этого сломалось хрен знает что, хотя внешне код выглядит правильно — это уже «приходится разбираться с низким уровнем».
В большинстве случаев она приведётся и продолжит работать. Даже более того, ты можешь из своего примера ниже убрать (int) благодаря этому, или вообще не знать чем '25' отличается от 25. Или писать что-то, что оказывается в итоге '123;f;xyz;7' > '11qwe', подразумевая сравнение 123 и 11 но не тратя время на парсинг этих строк, и оно сработает. Правда, есть неожиданность: '123;f;xyz;7' > '11e4' вернёт false, но в целом пофиг. Впрочем, лично я вышеописанной логикой стараюсь не пользоваться.
Сложнее?
Да, сложнее. Если что F# я не знаю, расписываю как это выглядит со стороны.
open FSharp.Data
Что это, зачем? За какой аспект логики работы отвечает эта строчка? Ни за какой, но она требуется.
type Users = CsvProvider<«users.csv»>
let users = Users.Load(«users.csv»)
Зачем мы два раза пишем о том что хотим загрузить users.csv? Чем Users отличается от users?
users.Rows |> Seq.filter (fun r -> r.Age > 25) |> Seq.iter (printfn «%s»)
Откуда взялось какое-то seq? Тут куча лишних букв, которые зачем-то надо помнить и писать, намного нагляднее выглядело бы примерно так:
users.Rows |> filter (Age > 25) |> iter (printfn «%s»)
Кстати, насчёт этого seq. Вот есть «system.out.println» в джаве, а есть «echo» в пхп. Тут та же история с огромным преимуществом пхп, ты ему пишешь «печатай» - он печатает. В джаве же «напечатать строку в поток out который часть системного чего-то там». Зачем там уточнять про системность, зачем там уточнять что печатаем в «out»?
Касательно второго примера сказать ничего не могу, регулярки мне не нравятся.
Исправление firkax, :
Если у тебя строка неявно привелась к числу и из-за этого сломалось хрен знает что, хотя внешне код выглядит правильно — это уже «приходится разбираться с низким уровнем».
В большинстве случаев она приведётся и продолжит работать. Даже более того, ты можешь из своего примера ниже убрать (int) благодаря этому, или вообще не знать чем '25' отличается от 25. Или писать что-то, что оказывается в итоге '123;f;xyz;7' > '11qwe', подразумевая сравнение 123 и 11 но не тратя время на парсинг этих строк, и оно сработает. Правда, есть неожиданность: '123;f;xyz;7' > '11e4' вернёт false, но в целом пофиг.
Сложнее?
Да, сложнее. Если что F# я не знаю, расписываю как это выглядит со стороны.
open FSharp.Data
Что это, зачем? За какой аспект логики работы отвечает эта строчка? Ни за какой, но она требуется.
type Users = CsvProvider<«users.csv»>
let users = Users.Load(«users.csv»)
Зачем мы два раза пишем о том что хотим загрузить users.csv? Чем Users отличается от users?
users.Rows |> Seq.filter (fun r -> r.Age > 25) |> Seq.iter (printfn «%s»)
Откуда взялось какое-то seq? Тут куча лишних букв, которые зачем-то надо помнить и писать, намного нагляднее выглядело бы примерно так:
users.Rows |> filter (Age > 25) |> iter (printfn «%s»)
Кстати, насчёт этого seq. Вот есть «system.out.println» в джаве, а есть «echo» в пхп. Тут та же история с огромным преимуществом пхп, ты ему пишешь «печатай» - он печатает. В джаве же «напечатать строку в поток out который часть системного чего-то там». Зачем там уточнять про системность, зачем там уточнять что печатаем в «out»?
Касательно второго примера сказать ничего не могу, регулярки мне не нравятся.
Исходная версия firkax, :
Если у тебя строка неявно привелась к числу и из-за этого сломалось хрен знает что, хотя внешне код выглядит правильно — это уже «приходится разбираться с низким уровнем».
В большинстве случаев она приведётся и продолжит работать. Даже более того, ты можешь из своего примера ниже убрать (int) благодаря этому, или вообще не знать чем '25' отличается от 25. Или писать что-то, что оказывается в итоге '123;f;xyz;7' > '11qwe', подразумевая сравнение 123 и 1041 но не тратя время на парсинг этих строк, и оно сработает. Правда, есть неожиданность: '123;f;xyz;7' > '11e4' вернёт false, но в целом пофиг.
Сложнее?
Да, сложнее. Если что F# я не знаю, расписываю как это выглядит со стороны.
open FSharp.Data
Что это, зачем? За какой аспект логики работы отвечает эта строчка? Ни за какой, но она требуется.
type Users = CsvProvider<«users.csv»>
let users = Users.Load(«users.csv»)
Зачем мы два раза пишем о том что хотим загрузить users.csv? Чем Users отличается от users?
users.Rows |> Seq.filter (fun r -> r.Age > 25) |> Seq.iter (printfn «%s»)
Откуда взялось какое-то seq? Тут куча лишних букв, которые зачем-то надо помнить и писать, намного нагляднее выглядело бы примерно так:
users.Rows |> filter (Age > 25) |> iter (printfn «%s»)
Кстати, насчёт этого seq. Вот есть «system.out.println» в джаве, а есть «echo» в пхп. Тут та же история с огромным преимуществом пхп, ты ему пишешь «печатай» - он печатает. В джаве же «напечатать строку в поток out который часть системного чего-то там». Зачем там уточнять про системность, зачем там уточнять что печатаем в «out»?
Касательно второго примера сказать ничего не могу, регулярки мне не нравятся.