Pull to refresh

Comments 51

UFO just landed and posted this here
Учите лучше английский. После этой главы со словарём всё остальное легко прочитаете.
И правда, навсегда забудете про переводы. Когда книгу переводят и издают в России, она уже морально устаревает.
А можно ли скачать новую XCode не имея статус разработчика?
UFO just landed and posted this here
В интернетах есть образы MacOS 10.9.3 и XCode 6 beta. Вроде работает.
А на текущей стабильной OSX заработает или надо бету обязательно?
UFO just landed and posted this here
Отлично, надо будет попробовать;)
На текущей полет нормальный.
Работает нормально, требует 10.9.3
Но тестировать без статуса даже на симуляторе не получиться
UFO just landed and posted this here
Все на эмуляторе тестируется.
Да, заходите в AppStore со своего яблока, авторизуете в Apple ID и скачиваете. Так же, на оф. сайте можете скачать любую версию Xcode.
компания Apple начала творить революцию в стане Objective-C разработчиков

Очередная яблочная «революция».
OptionalValue
func makeIncrementer() -> (Int -> Int)

Иногда возникает ощущение, что авторы курили Хаскель.
Очень жаль только, что не все является выражением. В скале уже привык к val x = for(i < — 1 to 5) yield i*2
Да, согласен. То же самое с if и другими управляющими конструкциями. Очень странное решение, учитывая функциональные возможности языка, так как это означает, что невозможно обходится только неизменяемыми переменными. Да и необходимость в явном return раздражает (:

Особенно в анонимных функциях, это ужас какой-то:
{ (a: Int) -> Int in return a + 1 }
Не надо лишний раз раздражаться. Это вредно. Вместо

{ (a: Int) -> Int in return a + 1 }

можно написать

{ $0 + 1 }
Да, return действительно можно опустить, пропустил этот момент, а вот с типами все несколько хитрее — тип можно опустить только если он очевиден из контекста, присвоить такую анонимную функцию переменной без явного определения типа не получится.
Типы аргументов, тип возвращаемого как и return могут быть опущены. Например:
println({a in a + 1 }(1))
Можно же написать экстеншены к любому типу.

Напишите экстеншен к Bool или к колекции и вы получите семантически нечто похожее.
Как же Apple задолбал своими попытками сломать совместимость кода с предыдущими версиями iOS…
Тема интересна! Прочитать еще раз на русском вредно не будет. Я за продолжение! И спасибо за начинание!
UFO just landed and posted this here
Знаки вопросов в синтаксисе безумно радуют:
if let t = foo.bar? as? T { }
Что-то это мне напоминает…
(displayln (format "x is~a a number" (if (number? x) "" " not")))
Вот только семантика абсолютно другая, ага.
UFO just landed and posted this here
Как будут со временем дела обстоять, но планируем к середине следующей недели
Не очень понимаю зачем перевод, это и есть тот самый «технический английский», который знает любой нормальный разработчик.
Не очень понимаю, зачем такие комменты?..
Ах да, наверное, написал нормальный разработчик, который не может пройти мимо.
Я не разработчик. Но мне интересно. И на русском читать приятнее. Так что скажу автору — спасибо за перевод!
Вообще ничего не понимаю…
Перевод сделан ради поста на хабре, особой практической ценности никакой не несет, есть вполне легко читаемый оригинал.
UFO just landed and posted this here
Мне кажется, было бы полезно сделать пошаговый tutorial по разработке первого приложения на swift, для тех кто раньше не программировал под ios. Начиная с настройки окружения…
К букварю инструкция не прилагается. Вы же программируете, неужели по опыту не настроите?
Чисто из любопытства, чем синтаксис
func area() -> Double
предпочтительнее
Double func area()
или даже
Double area()
?
Дело даже не в моей привычке к С\С++\C#, как минимум приходится делать два лишних нажатия для написания стрелочки (одно из них с шифтом). Мелочь? Из них складываются миллионы строк кода, годы работы, синтаксис должен быть выверен, лаконичен.
Работая в нормальной IDE я практически никогда не задумываюсь в С++ где ставить (.) а где (->) просто тупо нажимаю (.)
Точно также нотация func area() -> Double набирается примерно fu(Tab)area(Tab)dou(Enter) и ничем по сложности не отличается от Double func area() которая набирается dou(Tab)fu(Tab)area(Enter)
Так как Swift поддерживает функции высшего порядка, использования постфиксного синтаксиса для определения возвращаемого типа позволяет сделать синтаксис более однородным.

Объявление функции:
func increment(value: Int) -> Int {
    return value + 1
}


Объявление переменной, которая хранит функцию отображающую целочисленные значения в целочисленные значения:
let functionAlias: (Int) -> Int = increment


Обявление анонимной функции:
let incrementer: (Int) -> Int = { (x: Int) -> Int in return x + 1 }


Объявление функции, которая возвращает другую функцию:
func generateIncrementer(step: Int) -> (Int) -> Int {
  return { (value: Int) -> Int in return value + step }
}

let addTen = generateIncrementer(10)
addTen(15) // 25
Ух, обилие скобочек и стрелочек прям разгоняют мозговой CPU)
Спасибо за пример!
На самом деле у Swift'а несколько странный синтаксис, поначалу он показался мне очень похожим на Scala, но если Scala это смесь объектно-ориентированной и фунациональной парадигм с уклоном в функциональную, то Swift выглядит как смесь функциональной и процедурной (ну и капельку объектно-ориентированной тоже) с уклоном в процедурную.

Те же примеры на Scala:
// возвращаемый тип функции выводится автоматически
// последнее выражения функции является возвращаемым значением
def increment(value: Int) = value + 1

// нижнее подчеркивание обозначает, что надо сохранить в переменную функцию, а не возвращаемое ей значение
// (это связано с тем, что функция в Scala может быть вызвана без скобок)
val functionAlias = increment _

val incrementer = (x: Int) => x + 1

def generateIncrementer(step: Int)(value: Int) = value + step

val addTen = generateIncrementer(10) _
addTen(15) // 25
Дожили. Манулы на русский переводят.
При создании цикла используйте две точки (..), если не хотите включать большее значение в диапазон, и три точки (…), чтобы включить как меньшее, так и большее значения.

В Xcode beta 3 оператор .. изменился на ..<
И, кстати, если хотите погуглить на эту тему, то вам понадобится название на родном: «Half-Open Range Operator»
А нет ли акой-нибудь книги или хорошего туториала по разработке на swift под iOS с нуля?
Sign up to leave a comment.