2014-12-15 3 views
4

Оба этого типа литья работает
Редактировать
(как написано Nate Куком это не реальный типа, литье в Swift литья типа делается с as ключевым словом. С помощью следующего вызова Я инициализация Int64 с параметром Float.)Swift литье типа и скобка

anInt = Int64(aFloat) 

anInt = (Int64)(aFloat) 

Первого

var anInt : Int64 = 0 
    var aFloat : Float = 11.5 

    anInt = Int64(aFloat) 
    println(anInt) // this prints 11 

второго

var anInt : Int64 = 0 
    var aFloat : Float = 11.5 

    anInt = (Int64)(aFloat) 
    println(anInt) // this prints 11 

Во втором примере основное отличие состоит в том, что есть круглые скобки вокруг типа Int64, но я не нахожу никакой информации о синтаксисе в документации.

Заявление Int64(aFloat) является типичным вызовом инициализатора, который создает Int64, передавая Float в качестве параметров инициализации. Это верно?

В чем смысл скобок в (Int64)(aFloat)? Для лучшей читаемости или есть другой смысл? Thanks

+0

Возможный дубликат [Типы Swift внутри скобок] (http://stackoverflow.com/questions/24422108/swift-types-inside-parentheses) – bbarnhart

+0

Я читал, но это кажется более конкретным случаем. Ответ и пример Томаса Килиана кажется хорошим объяснением. – LombaX

+2

Не то, чтобы вы не * отливали * 'aFloat', вы вызываете инициализатор для' Int64' с поплавковым значением. Кастинг в Swift выполняется с использованием ключевого слова 'as', и в этом случае произойдет сбой. (Ваше утверждение «Утверждение ...» верное, но заголовок и другие детали указывают в неправильном направлении.) –

ответ

4

Похоже, вы можете добавить произвольное число круглых скобок (например, (((Int64)))). Основная причина в скобках, чтобы сделать слепок как (object as SomeClass).method()

+0

Спасибо, ваше объяснение кажется правильным. – LombaX

1

Смотрите дублированный вопрос, но короткий ответ, что (Int) объявляет кортеж, содержащий один Int, который является семантически тождественны, согласно спецификации языка, к одному Int Int.

Смежные вопросы