>> DANIEL Armendáriz: Ola, todos, Benvido ao IOS desenvolvemento de aplicacións
con rápida.
Eu son Dan Armendáriz.
Estou precepter de ordenador ciencia aquí na Escola
de Enxeñaría e Ciencias Aplicadas.
E rápida é realmente tipo dunha linguaxe realmente puro.
E eu teño algúns plans para hoxe.
Así, durante a hora seguinte ou entón imos mirar para si iOS desenvolvemento app
usando o Xcode e realmente crear algún , Aplicacións moi sinxelo, moi básicas.
E ollando para a forma que realmente tomar esas aplicacións,
e constrúe-los, e, de feito, poñer-los nun dispositivo IOS.
Algunhas das cousas que nós non imos ollar para
ha incluír cousas como realmente tomando unha aplicación
e poñelas na App Store.
Hai unha morea de tutoriais en liña que vai axudar con este aspecto.
Pero tamén porque canto parte CS50, comeza
para participar do desenvolvemento de Apple equipo, equipo de desenvolvemento do app do CS50.
Se vostede non fixo iso aínda, e é socio CS50,
Eu recomendo que facelo, porque iso
É así que é capaz de crear algúns programas no Xcode,
constrúe-los, e realmente poñer Los nalgúns dos seus dispositivos iOS
se realmente ten un dispositivo físico IOS.
Se non ten un IOS física dispositivo que é máis que ben.
Pode realmente desenvolver para iOS.
E ten unha Xcode simulador que permite a vostede
para ver a súa aplicación en acción no seu ordenador.
Pero que tipo de é unha cousa pura para realmente xogar e interactuar
coa súa candidatura nun dispositivo real.
Polo tanto, hai un par de requisitos para realmente facer todo isto de desenvolvemento.
Unha delas é que ten que ter un Mac.
Ten que estar en execución 10.9.4 ou posterior a fin de facer o desenvolvemento con rápida.
>> Pode usar unha versión anterior versión para desenvolver
con Objective C para iOS e Mac.
Pero eu recomendo, e unha gran parte do exemplos que veremos hoxe,
usar 10,10 Yosemite.
Entón, se aínda non ten actualizado, é unha boa escusa para facelo.
Agora Xcode 6.1 é a versión máis recente do o contorno de desenvolvemento integrado
que Apple prevé a libre que podes descargar fóra da App Store.
E eu recomendo que tamén realizar a última versión.
>> Se ocorrer de estar a executar unha versión anterior versión, Xcode 5 e abaixo só
simplemente non soportan rápida que sexa.
E as versións beta de seis, que foron liberados durante o verán,
soportan rápida, pero non hai Houbo un número enorme
de cambios na lingua, o suficiente de xeito que o código que está
indo ollar e que pode atopar en internet
realmente non vai compilar correctamente nestas versións anteriores do Xcode.
Entón, de novo, se aínda non ten unha conta de creador,
Eu recomendo que vaia developer.apple.com.
Rexístrese se, cree unha conta de creador, e faga parte do equipo de desenvolvemento CS50 app.
Isto pode fornecer-lle unha oportunidade compilar as súas aplicacións
e poñer-los no seu dispositivo.
OK, entón imos comezar.
O primeiro nós imos facer é
para realmente crear un moi proxecto sinxelo no Xcode
que lle permitirá facer un pedido.
>> Entón, se aínda non ten Xcode aberto, dalle abrilo
e crear un novo proxecto.
A pantalla especial respingo abrirá e pode darlle
algunhas opcións sobre o que que é o que quere facer.
Tan só dicir que quere crear un novo proxecto, unha nova aplicación.
Este diálogo aparecerá, supoñendo que está a usar o Xcode 6.1.
Neste momento, e para o duración do seminario,
estaremos usando aplicacións de visión única e só
unha especie de solicitude de base para obter os seus pés húmidos.
E pode ramifican-se no seu propio país a partir de aí.
>> Prema Seguinte neste momento.
Agora, aquí hai un par de cousas que pode querer entrar.
O nome do produto é o nome do seu proxecto.
Neste caso, eu son só vai chamalo Seminar1
porque é o noso primeiro exemplo.
Nome da organización, en este caso é só o meu nome.
Pode, por suposto, cambia-lo para o seu propio nome, ou para CS50.
Identificador da organización, se pasar de ter un sitio web pode ter
o nome de dominio en inversa, com.yourname.
e, a continuación, o nome do produto debe aparecer automaticamente
tras o que, como o identificador de conxunto.
>> Obviamente, a linguaxe que estamos vai estar usando para hoxe é rápida.
Pode, por suposto, usar Obxectivo C para iso, pero hoxe será rápida.
E nós imos para agora dicir dispositivos universais, de xeito
que funciona tanto en iPad e iPhone.
E imos deixar núcleo datos non verificados para manter
o proxecto relativamente simple para o momento.
Entón, imos adiante e prema Seguinte.
E el me vai preguntar onde quero salvalo.
Eu só vou gardalo para o meu escritorio para agora.
>> Todo ben, entón agora é o que vai pasar cando realmente aberto Xcode.
E teña en conta que o primeiro que ve
É este punto de exclamación que di que non hai identidade sinatura atopado.
Eu fixen este intencionalmente no meu ordenador e eu son
esperando que eu vou ser capaz de realmente resolve-lo,
porque quero que vexa como iso vai realmente traballar na súa propia máquina.
>> Dalle prema Corrixir problema.
Vai preguntar se ten un conta de creador mazá existente.
Este é o lugar onde a adhesión á CS50 equipo de desenvolvemento do app
é importante para que non só teño unha conta app,
pero tamén ten a capacidade para asinar as aplicacións
e poñer-los no seu dispositivo iOS.
Este é premendo não-- fix cuestión non é necesario
se está indo só para construír e desenvolver localmente,
enteiramente dentro do simulador iOS.
>> Pero, por agora eu vou para desenvolver e poñer-los
no meu iPad, que será capaz de transmitir tamén.
Entón, quero realmente engadir este.
E vai pedir me para o meu ID de Apple.
Por iso, vai ser iso.
E eu teño que buscar o meu contrasinal, que é por aquí.
Entón me dea un segundo para descubrir que, e copia ese, e pegalo para acá.
>> Prema en Engadir.
Me vai preguntar cal equipo quero participar.
Vou facer a escola de enxeñería.
Prema en Ingresar.
Oops, que é a persoa errada.
Imos facer este.
Esperemos que un vai funcionar.
Aquel que aínda non funciona.
Estamos a quedar sen bos aquí.
OK, iso se debe traballar.
Agora pecha iso.
Agora imos facer á escola de enxeñaría, prema en Seleccionar.
>> E agora espero que despois dun par de segundos can-- OK,
Vou revogar e solicitude.
Oh home, iso vai non funciona.
OK, vou probar un diferente.
Imos facer este aquí.
Demostracións en directo están me fallando.
Podemos ter de reverter a só construción enteiramente localmente,
pero iso sería OK neste caso.
>> Entón, aquí, mentres iso é verdade de traballo, o que imos facer é só
crear unha forma moi simple Ola aplicación Mundial.
Polo tanto, este é o Xcode.
E se non viu aínda, que pode ser un pouco intimidante no inicio.
Hai unha morea de paneis, hai un chea de bugigangas en diversas áreas.
Pero só entender que hai realmente varios compoñentes principais
a este ambiente de desenvolvemento.
Á esquerda están lonxe de todos os ficheiros que son aplicables ao seu programa
ou para o seu proxecto particular.
Nós imos estar facendo clic en torno nalgúns deles e nós imos
apuntar a máis máis importantes ao longo do tempo.
Na extrema dereita, que ten un conxunto de atributos.
E todos eses atributos, non son varios paneis para os atributos.
Os paneis vai cambiar, dependendo o contexto do contido principal, que
pasa a estar no medio.
Agora, a media pode realmente mostrar vostede unha variedade de cousas, por exemplo
o seu propio código.
Ou pode realmente have-- cando fai clic no storyboard que
é, de feito, só unha gráfica representación do seu usuario
interface para o seu application-- panel entón os atributos
no moi lonxe á dereita cambiará realmente.
Agora hai un par de outro cousas que quero apuntar.
Pode clasificar de explotar ao redor no ámbito no seu propio país.
Pero unha das cousas que foi moi útil
é este botón aquí, o superior dereita da xanela.
Hai ese botón que Parece que na extrema
deixou ten un parágrafo seguido por dous círculos e de ordenación
de dúas frechas apuntando afastados un do outro.
Se cambiar entre a editor estándar, que
é o extremo esquerda, o un que é seleccionada por defecto,
e os dous círculos sobrepostos o outro, o que é realmente
son unha vista de panel dobre.
>> E este é, en realidade, vai ser útil para nós
cando necesitamos vincular elementos na interface de usuario para o código.
E imos falar máis sobre que en só un momento.
Pero entenda que se comezar aínda máis paneis como este,
pode simplificar a súa vista só un pouco premendo volta
no seu editor de solteiro.
De momento, todo ben.
Entón, basicamente, temos o código en á esquerda, á dereita atributos,
e todo o que é que estamos a traballar aquí no centro.
>> Entón aquí eu premendo no storyboard principal.
E o storyboard, de novo, é unha forma en Xcode
que realmente pode crear o seu usuario interface usando só arrastrar e soltar
técnicas.
E así, para a nosa propia primeira aplicación deste
É precisamente o que imos facer.
Estamos indo para ir ata o moi lonxe parte inferior dereita
da pantalla, que contén unha variedade de elementos de usuarios
que pode, a continuación, fai clic e arrastra para crear a súa interface de usuario.
>> Agora todo isto elementos son chamados de puntos de vista
porque proporcionan algún tipo de vista.
Hai unha visualización de imaxe, para exemplo, para realmente amosar
unha imaxe na interface de usuario.
Hai unha exhibición de táboa para realmente mostran unha mesa.
Así por diante e así por diante.
Hai unha gran variedade de puntos de vista que pode seleccionar aquí.
Entón, só para agora imos para buscar unha etiqueta.
Pode só percorrer todas as listas que está aí.
Pero hai a busca barra na parte inferior
que fai que sexa máis fácil identificar Vistas específicas que realmente
quere arrastrar na súa interface co usuario.
>> Atopar o meu gravadora.
Vou arrastralo lo aquí, directamente no meu aplicación de mostra.
Ben alí, no medio parece ser bo.
E eu vou escribir "Ola Mundo!"
Prema Intro.
Agora eu teño unha etiqueta.
Non mira como é centrado moi apropiadamente.
Entón, podo tentar re centro-lo.
Afortunadamente, el ofrece a estes orienta para facer as cousas moito máis fácil.
Vou tentar compilalo.
Esperemos que vai realmente traballar aquí.
E se iso non acontecer, en só un momento ha de feito aparece no meu iPad.
É aquí mesmo.
Non é.
>> OK, entón é iso.
Somos feitos.
Creamos a nosa propia primeira aplicación.
Agora, obviamente, iso non fai nada.
É só unha etiqueta.
Non hai ningunha conexión entre a interface do usuario e do código.
Entón, se nós realmente queriamos para crear este respecto,
se realmente quería ter algún tipo de comunicación entre os elementos
que existen no pantalla e que o código
permítenos controlar eses elementos, a continuación
nós realmente precisa mirar para o propio código.
>> Entón, iso é o que se chama ViewController.swift.
E por, sobre todo para seus primeiros programas,
esta será unha especie de maior parte do código que enter--
será neste documento aquí.
Hai unha morea de cousas que está aquí ata agora, non?
Hai clase kit UI importación, substituír, [? funk ,?] todas esas varias cousas.
E non é moi claro o que é que todo isto significa.
Entón, imos dar un paso atrás para lonxe do Xcode para algo
e ollar para a propia linguaxe, rápido.
>> Así, con rápida, foi en deseño e desenvolvemento
en Apple por preto de catro anos para o meu entendemento.
E hai un par de características sobre iso que son realmente puro.
Primeiro de todo, el é compilado lingua, así como C.
Entón, primeiro ten que recompila-lo e executa-lo
antes de que poida realmente executar o código resultante.
Pero hai, ao contrario de C, un interactivo solicitará que realmente pode funcionar
e escribir comandos arbitrarios en.
E moi parecido unha consola JavaScript, que pode estar familiarizado co agora,
realmente pode avaliar os comandos e proporcionar-lle a saída.
E aínda tomadas que para o seguinte nivel
e crearon algo chamados playgrounds en Xcode
que permiten que visualmente traballar con código.
E nós imos realmente ver algúns exemplos de que, en só un pouquiño.
Baséase en subxace C. C Lo, porque todos os compiladores
crear un código de C e crear o código obxecto da mesma.
Pero realmente accións relativamente pouco sintaxe.
Que vai mirar moi diferente.
Haberá algunhas semellanzas.
Pero non vai ser algunhas diferenzas
comparación, por exemplo, JavaScript ou PHP.
E nós imos apuntar estes en só un momento.
>> Agora, unha das maiores cousas sobre swift iso é bo
é que, sobre todo se se compara a C, que está destinado a ser seguro.
Todo en que se pretende ser moi fortemente tecleada.
En realidade, é case irritante en principio, cando
comezar a traballar con rápido, quão tanto el impón tipo en todas as partes.
Todo o que é unha cadea ten de seguir sendo unha cadea.
É moi difícil de clasificar de converso Lo ou forza-lo en algunha outra forma.
>> E unha vez máis, imos amosar exemplos diso.
Pero finalmente entender que esta é para protexe-lo,
e por ti eu quero dicir o seu código, a partir de fallando en algunha maneira horrible cando
Ten algún tipo de tipo incompatibles.
E, de novo, traballar con el.
Porque vai ser frustrante no inicio como tentar descubrir por que exactamente
está a recibir esta inusual erro xestionar tipo.
Pero vai valer a pena a finais.
>> El trata sobre automático xestión de memoria,
así, non máis que teñen que xestione as cousas
como malloc e libre, e todo destes tipos de cousas.
E tamén está deseñado para xeneralidades.
Entón, mentres nós pode usar un Xcode para crear aplicacións IOS e aplicacións do Mac,
nós tamén podemos usalo só como unha linguaxe de script.
E para que poidamos usalo especie en vez de ou en vez de PHP
de Python para realmente rapidamente analizar e procesar
algúns datos que temos no noso ordenador.
>> Ela ten unha ampla variedade de moderno recursos, opcionais, mutabilidade,
xenéricos, peches, e unha morea de presente cousas que pode ou non pode recoñecer.
E é só unha especie de un desgraciado parte da linguaxe que algúns destes
tipo de elementos futuristas e modernos que están contidos os elementos son
tan arraigada que realmente vai ter que te ensinar CS50.5 algo.
>> Temos que aprender un pouco máis sobre algunhas das características, a fin
para realmente entender o que está a suceder por diante e así que podes ollar para o código
e non sentirse totalmente perdido.
E vai ver o que quero dicir por que en só un minuto.
OK, entón let's-- bastante deste tipo de cousas teórica.
Imos realmente ollar para o noso primeiro programa rápida.
É unha liña de código.
Liña 14 aquí, el di impresión l n Ola CS50.
>> Polo tanto, hai un par de cousas que é moi diferente sobre esta comparación
para as cousas que se pode utilizado para a partir de C, por exemplo.
Un deles é que non hai ningunha intmain, non hai como incluír sección,
non hai nada diso extra.
A inclúen, por defecto I / O, como as bibliotecas
que fornecen o características estándar da lingua,
aparecen incluídos como parte da biblioteca estándar do swift
e que son importados automaticamente.
Non ten que facer que a importación manualmente.
>> Non Intmain non existe porque o principal punto de entrada ao código
é, en realidade, o inicio do código.
Así, calquera código que ten desde o inicio
será realmente executada no inicio.
Entón, iso realmente simplifica enormemente.
Teña en conta, que non hai ningún punto e coma.
Non hai ningún punto e coma nesta lingua.
Vostede pon unha declaración nunha liña individual
e, a continuación, a seguinte liña representa outro comunicado.
Se queres poñer mulitiple declaracións en liña,
entón ten que separar por punto evírgula.
Pero, na maior parte, para un bo estilo, estamos
nunca vai ver punto e coma para os fins de demostracións de separación
en rápido.
Entón, como iso realmente funciona?
Ben moi ben como nós C realmente ten que compilar este.
E, para que poidamos facelo empregando c rápida e, a continuación, 1.swift.
E, despois de unha parella minutos que vai compilar
e entón eu podo executar un elemento.
E do que vai só dicir "Ola CS50."
Awesome, polo que non imos.
Alí está o noso primeiro programa Ola Mundo.
Imos pasar ao número dous.
>> Agora en isto-- isto cambiou un pouco, porque, mentres normalmente
fazer-- en realidade sempre que ten a compilar unha aplicación rápida antes de lle
realmente realizar un ele-- das grandes características
que me referín antes foi que swift realmente pode ser usado en especie
dun modo pseudo-interpretativa, hai é, de feito, como un intérprete.
Pero o que isto vai facer é alí é, en realidade, unha aplicación rápida
que pode realizar.
>> Por exemplo, se insire só rápida aquí, o que vai pasar
é que vai obter un prompt.
E podes escribir a súa rápida código, imprimir Ola, e executalo.
E vai realmente print-- Ben, non foi impreso neste caso
porque impreso para centrado a fóra, o que non é aquí visible.
Pero é realmente capaz de funcionar.
E así, neste caso, eu son só vai usar isto como un guión.
E eu realmente pode realizar este código alí.
Así, a forma que eu realmente executada será lixeiramente diferente,
pero vai ver que en só un momento.
Agora, neste caso, o que imos que facer é primeiro establecer unha variable.
Entón é así que definimos unha variable en rápido,
é que usan a palabra chave let, seguido polo nome da variable,
e, a continuación, nos fornecen algúns arrincar datos opcionalmente.
Entón, neste caso, estamos definindo unha constante chamada nome,
e imos usar isto en a saída da nosa liña de impresión
no, Ola nome moi inferior.
>> Agora, teña en conta que en vez de usar% s, que pode encapsular o nome desta
variable en / () e ser capaz de concatenar nos contidos deste
cadea para esta cadea.
Agora, ao contrario C, corda é un tipo real real en swift.
E así se senta ao lado ints e xunto
duplica moi facilmente e, por suposto, en comparación
para algunhas das outras linguaxes que vimos.
Entón, iso realmente funciona exactamente como esperaría.
>> Eu podo correr 2.swift.
E vemos que o meu nome é realmente unidas "Ola Dan."
OK, impresionante.
Pasando ao número tres.
Agora era un pouco dunha mentira que eu
dixo que a forma que declaramos variables foi usar a palabra chave let.
Como tantas veces como posiblemente pode facer quere usar deixar, porque o que fai
é que define unha constante.
E iso di rápida que pode optimizar a velocidade da súa aplicación
porque sabe que esta variable non vai cambiar.
>> Así, avaliar con coidado cando está indo a usar
unha variable para o efectos de mudala.
E cando vai crear unha variable só
para manter algúns datos e que é en realidade non vai cambiar.
Polo tanto, este concepto de imutabilidade, non está realmente indo para cambiar,
é importante incluso como tanto para abaixo como a definición de variables.
Entón aquí definimos un nome, deixar nome, e neste caso
é unha constante, que é do tipo corda, e é igual a Dan.
>> Así, mentres que no anterior versión, el infers-- e por "iso"
Quero dicir rápida swift-- infere o tipo de datos
que entramos á variable.
Neste caso, podemos estar explícito.
Entón, imos entón o nome deste variable é o nome, a continuación, dous puntos.
E despois dos dous puntos que nos especificar o tipo de datos.
Entón xa non é int nome ou nome de cadea ou algo parecido.
Pero, en vez deixar etiqueta, estamos establecer se se trata
é constante ou variable, seguido do nome,
seguido polo tipo opcionalmente.
>> Polo tanto, neste caso estamos definindo este nome é unha cadea.
Estamos dicindo é Dan.
E agora eu teño outra variable, neste caso chámase etiqueta.
Pero teña en conta que é prefixado coa palabra clave var.
Os medios var contrasinal que esta variable pode
ser cambiado nun punto máis tarde no tempo, nalgún lugar baixo o código
podemos realmente cambiar-lo e el non nos dará ningún erro particular.
>> Podemos facer concatenación estándar operador aquí, usando o símbolo máis
para realmente engadir o noso nome para esta cadea.
E entón podemos imprimir como vimos hai pouco.
Agora imos dicir que quero crear unha variable
pero non quere arrincar aínda.
Aínda non quere poñer todos os datos dentro del.
Ben, ten que dicir rápido que o tipo de datos
será antes de poder realmente define-lo correctamente.
>> Polo tanto, neste caso, cando definimos unha variable chamada grao debemos ser
explícita sobre o seu tipo, porque non se pode inferir só mirando
na datos inicializados que fornecer a el.
Isto daranos un erro se só tipo var grao, por exemplo,
porque non ten ningún tipo, polo tanto.
Así grao = 100.
Así que 100 é un número enteiro, encaixa moi ben para iso.
Vai seguir funcionando.
Podemos ver como, despois, pode concatenar isto.
Agora podes ser tentados, se realmente
quería concatenar o grao noutra cadea de texto,
noutra corda, que faría só usar ese mesmo operador concatenación.
E que, normalmente, sería verdade.
Pero swift non vai permitir que implicitamente cambiar o tipo de datos.
Polo tanto, neste caso, este liña, 25, ha falla
porque grao é unha enteiro e non unha cadea.
E por iso hai unha incompatibilidade conxunto de tipos.
Entón ten que ser explícito cando que desexa cambiar estes datos,
cando quere coagir esta datos para un tipo
e dicir: OK, quero tomar esta clase, que é un enteiro,
e convertelo en unha cadea.
>> Entón eu levo un capital s Corda toda tipo, vai notar, son capitalizados,
Int, Double, cadea, así por diante e así por diante.
Todos eles son capitalizados só para facer as cousas máis fáciles.
E nós imos dicir capitalizar Cadea pasar el grao.
E el ha crear un secuencia de fóra dese enteiro.
E entón podemos concatenar os dous moi ben.
Calquera dúbida sobre este material tan lonxe?
Todo ben, imos arar mediante número catro.
>> Agora imos falar sobre algúns máis avanzado estruturas, como arrays e loops.
E ao contrario de C, matrices en rápida non son representados por punteiros.
Punteiros en rápido, aínda que existen, chamada
como punteiros inseguras ou algún tipo similar como este,
eles non están expostos a vostede normalmente.
Así tórnase moi difícil para que manipule
a memoria directamente do seu ordenador.
>> Así, as matrices son só un tipo de datos.
E eles están referenciadas usando este tipo notación de agora estándar paréntese
que xa viu antes.
Pero cando realmente quere definir un tipo dunha variable
como unha matriz de algúns tipo particular, entón
poñer este tipo entre corchetes.
Entón o que eu estou dicindo aquí é que Estou creando unha variable chamada
series de tipo int matriz.
E eu estou definindo que igual a algún inicializados datos, que neste caso
é de 100, 0, 90, 85, que é só unha colección de series arbitrarias aquí.
Agora, neste caso eu puidese, Teña en conta que, eliminar o tipo,
e sería capaz de inferir que con base nos datos inicializados.
Pero se eu tirei este e Eu precisaba para define-la máis tarde,
entón eu tería que estar seguro que eu teño o tipo de alí.
Todo ben, imos seguir adiante.
Entón, nós can-- matrices nos ofrece unha variedade
de métodos a través de que a notación de punto en probablemente está familiarizado co agora.
Así grades.count, por exemplo, dinos precisamente o número
de elementos que fan contidos nesa matriz.
>> Se eu queira engadir additional-- agora conta que esta é unha var
não-- e esta é unha variable e non unha constante, a cal
significa que podo cambiar o contido desa matriz, podo engadir obxectos a el.
Pero eu non podo só dicir graos e logo, entre corchetes
catro, porque iso vai ser un erro de falta de límites neste caso.
Se eu queira realmente cambiar o tamaño desta matriz,
Eu teño que usar o método de aumento de punto para engadir algo ao fin do mesmo.
Podo, con todo, o cambio índices individuais.
>> Entón eu podería usar notas e soportes logo cadrados
cero a manexar este primeiro índice e etc., como podería esperar.
E podo facer o mesmo para realmente recibir os datos de que, como ben.
Agora hai tamén unha especie de método de fantasía de facelo, ademais de notas iguais
e, a continuación, outro índice, que append--
ou non outro index-- pero outra lista que
pode engadir nesa lista para a parte de atrás de graos.
E as notas van entón conter todo isto.
Pero iso é unha especie de unha cousa extra que eu estou só mostrándolle para divertirse.
>> Agora hai un loop for.
E este é o inicio de onde as cousas comezan a cambiar un pouco.
Observe como este para o lazo é diferente de loops en C.
Agora vou notar que loops na Swift pode
pode facer para ollar como loops en C, pero hai unha morea de construcións máis útiles
que elimina esencialmente a necesidade ter para var i é igual a 0 punto e coma i
é inferior a algúns lonxitude, así por diante e así por diante, non?
E esta construción é só un deles.
>> Para o índice, o índice é novo variable, neste caso, o período.
E o que eu digo é que non hai un intervalo de 0 todo o camiño ata
pero non incluíndo grades.count.
Polo tanto, este punto punto menos do signo representa
unha gama de valores a partir de cero todo o camiño ata grades.count menos 1.
Hai unha separada operador que existe,
que é dot dot dot, o que significa que quero que o rango de cero,
aos graos contar ata.
>> Pero, neste caso, porque estes matrices son índice cero, nós naturalmente
Non quero ir ao o número máximo de tipo.
Podo resumir as notas, como pode esperar, e saída de todas estas cousas.
OK, seguindo adiante.
Agora imos falar sobre as funcións.
Co fin de establecer unha función usa a palabra chave funk.
E, de novo, na Swift ten que ter moito coidado cos tipos.
Vostede ofrece a el Parámetros por definición, por exemplo,
o nome do parámetro e logo Colin, o tipo de datos
que espera que parámetro para aceptar.
>> Polo tanto, neste caso, temos unha función chamada de conta de impresión serie.
El acepta unha variable chamada libro de notas, ou mellor, un parámetro chamado gradebook.
E nós estamos esperando que gradebook para ser unha matriz de números enteiros.
Se isto gradebook está baleiro, imos imprimir unha cousa.
Se non, imos imprimir o número de graos que este ten na realidade.
>> Agora, se queremos volver algún valor, entón o camiño
que modificar esa definición é realmente usar esta palabra clave de frecha,
ou para utilizar este significante frecha.
Entón, aquí imos definir unha función chamada media.
Estamos indo para aceptar unha lista de números.
E nós estamos indo a volver dobre, que esperamos
ser a media deste array.
E, a fin de facelo, a fin para realmente calcular esa media,
imos dar un suma e imos de Claro resumir todos os obxectos
dentro desa matriz.
>> Teña en conta que hai unha nova estilo de loop aquí.
Non debemos ser explícito sobre iteración sobre cada elemento,
pero podemos dicir que, no canto de grao e gradebook, significado
que, para cada elemento que temos nesta,
prever que o artigo nesta chamado de grao variable.
E quero facer algo con el.
Entón, eu vou resumir todos estes datos e realmente volver a dobre división.
>> Agora, observe novo aquí hai a concepto de división enteira no Swift.
Se quere dobrar división porque quere decimais,
entón ten que ser explícito, non só sobre un dos lados,
porque non vai permitir que para coagir datos en ambos os dous lados desta,
ten que realmente curso ambos os dous lados en dobres
de xeito que é moi explícita sobre asegurarse de
que está facendo dobre división.
>> Imos seguir adiante.
Entón, se eu realmente quero accept-- polo tanto, neste exemplo concreto,
este aínda é un comando aplicación baseada liña.
E estamos empezando a ver algúns dos as limitacións da nova linguaxe
en que, aínda que o que pudermos acceder os argumentos usando
esta process.arguments, é Aínda que non necesariamente o máis limpo
cousa que eu xa vin.
Pero, basicamente, animou-vos a sorte de mirar para este código
e intentar descubrir o que exactamente está a suceder.
>> Esencialmente, o que está pasando é que Estamos facendo unha lista de argumentos
e foron forzalos a enteiros, e entón nós estamos
vai usar isto como unha forma de imprimir a media de todas as nosas calidades.
Seguindo adiante.
Agora hai outro tipo de data-- outro tipo de datos, en vez de matrices
chamados de dicionarios, que son moi semellante para hash táboas ou mapas hash
e son tamén similares ás Arrays asociativos de PHP.
Entón eles teñen a noción de claves e valores.
>> E eles están definidas tamén con esta notación paréntese,
pero a diferenza é que os dicionarios teñen
dentro do corchete, dous puntos.
E o colonos separa os datos tipo que é a clave e o valor.
Polo tanto, neste caso, eu estou indo a crear un dicionario para aceptar algunhas notas.
E iso vai ser do tipo string: int,
o que significa que todo o claves van ser cordas,
e todos os valores dos claves van ser enteiros.
>> O que isto significa que podo a continuación, facer referencia a datos concretos
que quero usar esas claves no canto non por índices numéricos como eu
tería a unha matriz de patrón.
Agora imos ver, non hai unha cousa importante
que eu tamén quero falar esta secuencia de código específico.
E iso é que non hai outro tipo de datos,
ou mellor, non hai esa idea de datos que é
contidos Swift chamado opcionais.
>> E o que significa é opcional que recoñece o feito de
que ás veces non vai obter os datos que realmente espera.
E entón o que quero dicir con isto é-- imos Bótalle un ollo nesta secuencia de código
que itera sobre toda a argumentos que foron pasados ​​a este código
e tenta convertela los, intentos para subdividido nunha serie de cordas,
porque acepta unha moi determinado tipo de argumento.
E entón el vai coagir as cordas que representan números
en enteiros que son notas, que eu poida, logo calcular.
>> Entón, basicamente, eu vou usar a función de división que
existe dentro do Biblioteca estándar Swift.
Vou pasar el o cadea que quero dividir.
E entón en usar este tipo de sintaxe funky, que
Eu non sei se imos chegar, pero quizais, nós
vai realmente precisa especificar o personaxe que queremos dividir a.
Entón, o que iso realmente se parece?
Imos dar un ollo realmente realizar este código.
>> Así, por exemplo, digamos que eu teño un quiz e eu teño 50 sobre iso.
E eu teño unha Serie de exercicios e Teño un centenar sobre iso.
E eu got-- hai outra quiz e eu teño a 40 sobre iso.
I prema Intro e, finalmente, o que vai ocorrer é que o que está facendo
está tomando estes parámetros, dividindo as cordas neses dous puntos,
recoñecendo que hai dous elementos en cada unha,
e é esencialmente manter o control de cada un.
>> Entón, eu teño no meu dicionario dun quiz, cuxa valor está representado polo número 50,
Eu teño un PSET que ten valor de 100, e un quiz un que ten un valor de 40.
Despois, máis tarde no código I en realidade, en media, todos estes valores
e enumerar todas as claves de que dicionario particular.
Pero iso é importante de modo que pode notar
o que está a suceder, é que o que nós quero facer é tomar esta cadea
e división lo sobre este personaxe, que podemos facer de novo con esa división
función usando este tipo de sintaxe interesante que existe aquí.
>> Só por agora asumir que iso é OK.
Imos ollar máis para esta en pouco tempo.
Pero agora hai un interesante aspecto que, en realidade,
quero tentar converter este cadea nun enteiro.
Pero noutros idiomas o que pode ocorrer é
que probablemente intentaría para facelo e quere volver
unha especie de sentinela valor como un negativo
ou quizais un nulo ou algo parecido.
Ou quizais fose só causou un erro.
E teríamos de a continuación, pegar este erro
e, a continuación, tentar facer algo baseado no feito
que esta conversión para un número enteiro fallou.
É aí que esta idea de opcionais entra.
Pode realmente crear un tipo de datos que é un int punto de interrogación, por exemplo.
Isto significa que este número enteiro é, de feito, opcional.
E o que vai pasar é que pode conter un número enteiro, ou quizais non.
Pode, de feito, ser estoutro idea, enteiramente chamado Nill.
En que isto significa que non hai calquera valor neste.
Non o é cero, simplemente non hai valor.
Non hai absolutamente ningún valor representado.
>> E iso é o que esta liña 71 está facendo.
É que está dicindo que eu quero tentar establecer un valor,
un grao variable chamada, igual ao conversión desta secuencia nun int.
Entón eu tomei esta cadea, esta primeiros compoñentes,
ou mellor, a segunda compoñentes, porque esta
é cero, indexada, do presente cadea que eu dividir.
E quero converter que, a un número enteiro.
Pero non sempre pode proceder normalmente, porque imaxinar
o que acontecería se, no canto de tipo un número, eu tipo de curso como asdf.
>> Vai fallar.
Non é, en realidade, será capaz de converter que para un número enteiro
como sería de esperar.
Entón en vez de chutar fóra algún tipo de erro,
temos esta idea dun opcional.
E isto significa que o uso de este punto de interrogación que podo dicir,
OK, é posible que podo tomar iso, converteuse o nun int,
e poñelas nunha variable, que tamén será un int.
Se é así, entón iso significa que que este foi exitosa
e esta primeira porción de o bloque pode continuar.
>> Se non, el fallou.
Non hai valor en grade-- ou si non hai valor en vigor,
e eu realmente teño que tentar xestionar esa condición de erro.
Vai ver isto punto de interrogação o tempo
en Swift e no exemplo de código Swift.
E, de feito, o operador Nill, este tipo de punto de interrogación, a parte opcionais,
será probablemente un das cousas máis difíciles
a especie de quentar a cabeza con como realmente traballar con el.
>> Pode ter sentido agora.
E, de feito, cando eu era escribindo código de exemplo para iso,
seguramente eu entendía o que estaba acontecendo,
pero aínda me pego por sorpresa de cando en vez
cando eu tería que atopar algúns datos foi realmente
unha versión nula, unha versión opcional dos datos que eu estaba esperando.
Entón, só tes que entender que, se ter unha versión opcional
ten que descomprimir que datos desta caixa.
>> Entón, é máis ou menos como I-- imaxine se ter unha caixa e contén algo.
E o que ten que facer é facer a pregunta,
é posible que esta caixa, en realidade, contén os datos que eu estou buscando?
Se é así, a continuación, puxe que fóra de datos e poñelas esta variable existente.
Se non, entón eu só teño que ignorar o contido dese cadro
completamente porque literalmente non contén nada.
>> Calquera dúbida sobre este asunto?
OK, imos pasar lonxe deste tipo de cousas de liña de comandos na base
e comezar a ollar para algunha da tecnoloxía
Xcode que ofrece para nós baixo a forma de playgrounds.
Polo tanto, hai unha morea de capacidade aquí con Swift.
E se abrir o Xcode e pregunta o que quere facer,
pode abrir o playground e só xogar
con unha gran cantidade de estruturas diferentes e aspectos da lingua
antes de comezar a tocar o IOS SDK ou Mac SDK.
>> Entón, neste caso, digamos que eu have-- Eu teño un exemplo relativamente artificial
aquí, pero pense comigo como nós tipo de traballar con este exemplo.
Imos dicir que temos que facer unha chea dos expoñentes cun valor fixo,
como sabemos que imos ter facer unha chea de poderes cadrados, por exemplo.
Entón, nós imos levar algún valor x, nós imos facer a quadratura-lo,
imos levar algún valor y e imos facer a quadratura-lo.
Así por diante e así por diante.
>> Agora nós realmente pode só crear un poder de función 2 para iso, non?
Entón nós crear un poder de función 2.
Imos aceptar unha parella.
Imos output-- ou nós imos volver un tipo de matrimonio.
Nós imos levar este resultado e, a continuación, para o dobre
o que realmente levar os resultados, que foi inicializar co valor de un,
e multiplicalo por x.
Entón, en esencia, temos x veces x aquí.
>> E entón eu podo entón, como poderiamos esperar, tome isto, poder correr de 2,
proporcionan a el algúns datos, eu gusto 2.0.
E nós comezamos a ver os resultados aquí 4.0.
Realice potencia de 2 en 3,2 e nós comeza a ver o noso resultado, 10,24.
Ata aí todo ben, non?
Agora estamos a pensar, así, OK.
Agora eu realmente precisa facer unha chea de poderes de 3.
Entón, eu vou copiar e pegar todo este código, cambiar o nome da función de
alimentación de potencia de 2 a 3, e todo será o mesmo, excepto para este valor
aquí, neste intervalo, 1 ... 2.
>> Entón, en vez de repetir este ciclo dúas veces,
Quero repetir este ciclo tres veces.
Entón, eu só cambiar o valor de 1 a 3-- ou en vez de 2 a 3.
Entón, de novo, do mesmo código, esa é a única cambio.
Agora iso tamén funciona.
Poder de 3 subministrada en algún valor de 2.
Estivemos con 8.
Entón 2 cubos.
E 3.2 en cubos é de 32,768.
E ata aí todo ben, non?
Pero espero que isto é un pouco bit dunha bandeira vermella para ti
en que agora temos algúns duplicación de código
con excepción dalgúns moito menor cambiar dunha a outra.
Entón, hai algunha maneira que poderiamos ser capaces de simplificar
este problema, onde podemos realmente, en tempo de execución, descubrir algúns,
nos fornecer algunha función que ten precisamente o poder do que queremos.
>> E hai esa idea de clausura, o que é moi, moi
importante, no contexto da Swift, e en moitas outras linguas tamén.
Pero, probablemente, vai ver el é utilizado máis no Swift
porque está incorporado dentro da linguaxe
que vai noutra tamén linguas modernas.
Así, a idea dun peche é este, que é
pode ter unha función que desexa ser unha función xenérica, un poder xenérico
da función.
>> E esa función aceptará este expoñente que realmente
quere crear.
Así, por exemplo, o primeiro exemplo, queriamos unha potencia de 2.
Por iso, sería proporcionar enerxía de e, a continuación, en parénteses 2.
E agora o que este, en realidade, retorna.
Este recibe unha entrada dun iniciador chamado y que é un número enteiro,
e el retorna este tolo buscando cousa en parénteses parentheses--
matrimonio e, a continuación, frecha dobre.
>> O que isto significa que eu son vai voltar unha función.
Eu non estou volvendo outro tipo de datos, eu son
en realidade retornando dunha función que ten este parámetro, que
acepta un dúo como entrada e xera unha dobre como un valor de retorno.
E, como resultado, porque agora eu chamei poder, pasando nalgún valor para y,
e eu estou creando esoutro aviso function-- que hai
outra función que está a ser creado dentro isto-- o que eu estou facendo
é entón podo cambiar este valor, que un
valor que cambiara 2-3, agora estou a facelo y.
>> E iso persiste.
Entón, cada vez que eu chamo de poder de, esencialmente, o que pasa
é que eu teño de retorno dunha función.
Lembre que aquí me define unha nova variable chamada praza.
Eu define-lo mesmo que o poder de, sempre que este valor 2 ao poder de.
E o que iso retorno é a función.
Entón praza, a variable cadrado, agora é do tipo de función
que ten isto-- oops, desprácese arriba un pouco bit-- que ten esa sinatura,
aceptar unha parella e saída dunha parella.
>> Entón agora o que eu fixen Eu teño é esencialmente
creou unha función chamada praza que acepta calquera valor e será cadrado-lo.
Podemos ver que pasa aquí.
Praza 3, por exemplo, significa que eu vou para aproveitar o valor 3 e cadrado-lo.
Entón, como exactamente funciona isto?
Cando pasar o poder de 2-- cando pasar 2 a este poder de función,
esta variable y é Explique o valor 2.
E iso é unha especie de retido na memoria.
Isto é unha especie de como realizar en estado algures no ordenador,
nós realmente non me importa o quão ou en que, neste punto.
>> Pero eu volver esta función chamado exponentiate.
E, de novo, iso realmente non importa o que esta función é chamada,
nós realmente podemos chamalo de calquera cousa, que acepta un double e retorna unha parella,
pero usa ese valor y dentro del.
Entón, aínda que sexa esta función, esta función exponentiater que é
foi devolto á miña variable que eu chamei cadrado,
que ten nela contido esa noción de que era y.
E recorda que.
>> Entón, cada vez que eu chamar esa función que agora se chama cadrado, usa isto.
Pero iso tamén significa que podo crear outra variable utilizando
un poder diferente de.
Entón, podo crear unha variable de cubo, para exemplo facilitar a el o poder de tres.
Agora cubo vai realmente levar moito valor e cubo que e devolve-lo.
Así, podemos ver que eu recibín un valor de 8 a partir diso.
>> Pero ese valor y non ten cambiou, porque son
realizada en especie de variables independentes.
Son unha especie de lugar en espazos independentes na memoria.
Entón cubo terá sempre x para o poder do 3.
E cadrado terá sempre x para a potencia de 2, que
significa que cadrado será sempre números cadrados, como eu esperaba.
E cubo sempre en cubos números, como eu esperaba.
Isto tamén significa que ás veces pode obter algún tipo de sintaxe vista funky
onde ten o poder de ben no parte inferior da pantalla aquí, o poder de 5.
E pasar ao resultado.
Vostede chama iso de función que é Atopouse co número 4.
E entón o que, esencialmente, este é de 4 a quinta potencia,
podemos ver os resultados alí.
Con min ata agora?
>> Entón, esa idea chámase peche, porque o que estamos facendo, basicamente,
é que estamos encapsulado algúns datos into-- especie
de englobar estes datos nunha función e estamos
poder reutilizar esta función.
Agora esta sintaxe aínda pode realmente ser simplificados dunha gran cantidade.
E hai moita posibilidade en Swift para esta simplificación.
E iso é o tipo do as posteriores realmente ollar.
Así, en 7b por exemplo, nós levar este mesmo código exacto.
>> Pero agora, en vez de realmente definir unha función
dentro deste poder de funcionar e darlle un nome,
e, a continuación, voltar o nome desa función, o que
logo se usa como parte este peche, no canto estamos
indo só para simplifica-lo.
Non necesitamos esta función non ser identificado.
Polo tanto, este é o concepto dun función anónima onde podemos, a continuación,
aceptar como entrada, entre parénteses aquí, a variable x que é do tipo double.
>> Estamos indo para voltar o tipo de matrimonio.
E, a continuación, o seu contrasinal, n, é o inicio desta función.
Entón, teña en conta que todo isto é dentro de claves
e estamos definindo un anónima funcionar aquí.
Só unha forma máis simple de definir exactamente o mesmo.
OK?
Pero espera, Swift realmente nos permite para ir máis lonxe e simplificar aínda máis,
porque realmente non importa que este parámetro é
chamado algo particular.
É realmente ser chamado algo e aínda podemos usar este primeiro parámetro.
>> Entón, en realidade, non é este especial tipo de datos en funcións anónimas,
hai este nome especial de variables en funcións anónimas
que comezan coa cifrão e representan
os números de parámetro, o cero indexados, para esta función.
Polo tanto, hai un par de cousas a suceder.
Aquí eu vou volver, e logo un chaveta representando unha función,
non?
>> Repare que eu non teña definido o tipos de parámetro ou o tipo de retorno.
De feito, pódese inferir por mor da sinatura
desta función orixinal.
Así, podemos eliminar que como unha posibilidade.
Pero tamén podo usar o sinal de dólar cero a representa ese primeiro parámetro que é
pasou a esta función anónima.
Entón, simplificando-o aínda máis.
OK?
De momento, todo ben?
>> Agora é este type-- vostede Teña en conta que este sinal de dólar de cero
que vimos neste chaveta que vimos só un pouco
atrás neste seis exemplo Swift?
Foi aquí mesmo.
Nótese que é exactamente o que estamos mirando,
é que xa pasamos para esta función de división
unha función anónima que verifica o primeiro parámetro
para ver se é igual ao símbolo de colon.
E iso é o que é pasando, é que todos
estamos doing-- o retorno contrasinal está implícito
neste case-- estamos volvendo este valor para onde estamos comparando
o primeiro parámetro en relación este colonos personaxe.
E así, este tipo de desmistifica iso.
E vai ver esta construción moi en sintaxe Swift, así como manter ese
presente cando está tendo un ollar para iso.
Agora podemos saír os coches un pouco
e ir realmente sofisticados que mostra incluso un pouco máis de poder de Swift.
Podes incluso ver algúns destes en códigos de mostra.
Entón é por iso que eu vou amosar isto para vostede.
>> Basicamente o que podemos facer é que, en primeiro lugar de todo, era unha especie de innecesaria para min
para aplicar toda esta potencia de código, porque se importar o Darwin
biblioteca, realmente inclúe unha función chamado pow que fai isto para vostede.
Así, podemos simplifica-lo aínda máis e temos a nosa función de potencia ata agora só
ser un marabilloso un forro onde acabamos voltar esta función anónima que
acepta dólar sinal 0 como o seu base e y como o seu expoñente.
>> Pero podemos estar realmente, moi chique cando nós
entender que Swift ten un lote de potencia baixo o capó.
Moitos dos operadores que estivemos xestionar,
ademais de signos e símbolos de división e todas esas cousas que normalmente
operar con con tipos de datos nunha linguaxe de programación,
son, en realidade, en Swift extensible.
Entón, o que isto significa que nós Pode configurar os nosos propios operadores.
>> Entón agora eu estou canso de escribir todo isto pow e, a continuación, un paréntesis e despois
a base.
Eu non quero facelo.
En realidade, eu quero ter unha operador que me permite facelo.
Entón, podo dicir que quero Swift para crear un operador, estrela
star-- polo xeito que eu non podo usar o quilates porque o quilates é un operador que
fai algo completamente diferente.
Entón eu non quero clasificar de chocar con aquela.
E así, o que ve nunha variedade de linguas, incluíndo Python,
é como operador star star para representar expoñentes.
>> Así que esta é a única razón por que eu fixen iso.
E iso vai ser un operador infixo tipo.
E eu teño que ofrecer para el unha información
sobre a precedencia do presente operador por iso é asociativa esquerda.
É como relativamente alta prioridade en relación
a somação ou multiplicación.
É maior prioridade que todo isto.
Así por diante e así por diante.
E entón eu definir o función que realmente
dita o que este operador fai.
Así, supoñendo que eu teño unha esquerda lado e do lado dereito,
que sería, quizais, unha mellor nome da variable para iso.
Á esquerda e á dereita.
Podo, entón, tomar ese poder do á esquerda para o lado dereito
e devolver ese valor.
Polo tanto, agora é super doce.
Todo o que temos que facer é estrela 2 estrelas 3 e que é de 2 a terceira potencia,
e temos un valor de 8.
Estrela 2 estrelas 10 é de 2 a 10 enerxía, temos 1.024.
>> Polo tanto, agora o noso poder de función, que á súa vez é diferente,
porque toda a idea detrás diso foi que temos unha función que
sempre leva algún valor e multiplica ele-- ou mellor
leva o expoñente para a mesma potencia.
Polo tanto, agora é aínda máis sinxela.
Entón agora é só dólar asinar 0 star star y.
Nós nin sequera ten que usar pow anymore.
>> OK, que perdeu?
Estamos facendo OK?
Calquera dúbida sobre este material?
Si?
>> Audiencia: Cando você-- [inaudível] o poder do funk de y matrimonio.
Entón, cando está retornando dunha función.
DANIEL Armendáriz: Funk de poder y matrimonio.
Oh yeah, eu non sei o que os números son y.
Sentímolo por iso.
>> Audiencia: Por que está volvendo unha función [inaudível] despacho.
Non se dólar cero star estrela y [inaudível]
atopar ese operador que retornando double [inaudível] dobrar?
>> DANIEL Armendáriz: Entón deixe- me responder á súa pregunta
como eu a entendo, e me pode dicir se eu non entendín súa pregunta.
Entón, esta construción, a chaveta cifrão cero star estrela y,
é unha función.
E acepta un parámetro que é representado por este sinal de dólar cero.
O contrasinal retorno está implícito nesta sintaxe da función moi curto, anónimo.
>> O que significa que, esencialmente, o que se di
é que eu estou definindo un function-- e entón eu vou
basta chamalo something-- onde eu teño algún valor y.
Teño y, que é o dobre.
E eu estou volvendo unha parella.
E eu teño dentro dese regreso y-- sorry, Eu non debería ter chamado este x y--.
Oh querida, oh querida, oh querida.
X-- nope-- star star y.
>> Polo tanto, esta é só unha versión simplificada deste.
E así, a razón que eu teño dólar sinal cero é que a utilización deste gabinete
significa que eu non teño máis escribir prisioneiro de guerra, ou deixou de facer
Teño que facer algo como 3 estrelas estrela 2.
Eu só podo ter un único función chamada praza
que sempre tomará algúns como valor de entrada
e realmente volver a praza do que iso.
>> Así, toda a finalidade de que o peche sexa para só unha especie de encapsular o feito
que eu sempre quero usar y sempre Eu chamo iso de función que o poder
cando tomar este expoñente.
Así, volvendo logo unha función que acepta
un dobre, que é a base, e retornando o resultado dese expoñente
é a clave aquí.
E esa é a gran diferenza.
Houbo só un pouco de un aventura.
>> Isto non é diferente en comparación cos exemplos anteriores,
pero foi só un pouco de a florecer podemos realmente
crear un operador en Swift e realmente facer cousas con el,
que é un tipo de cousa legal.
Será que eu responder a súa pregunta?
Doce.
Calquera outra cousa antes de seguir adiante?
Aceptar.
>> Agora este tipo de suplica a pregunta é isso-- ben OK,
agora temos a capacidade para funcións a seren devoltos.
Podemos tamén pasar funcións como datos ou como parámetros para outras funcións?
E, de feito, podemos.
Entón, imos dicir que temos todos o mesmo código.
Temos a variable cadrado que será cadrado este código.
E nós temos a variable cubo que vai cubo algúns datos.
E nós realmente quere aplicar para unha ampla variedade de números.
>> Entón o que nós pode ser tentado a facer, por suposto, o que certamente é válido,
é para repetir esta lista de números e aplicar as miñas funcións cadrado e cubo
e obter dúas novas listas como resultados que son esta lista orixinal cadrado
e en cubos, respectivamente.
É perfectamente aceptable.
Pero o que é a cousa que que vemos aquí é que temos,
de novo, a duplicación de noso código.
E non hai, quizais, unha oportunidade para nós para simplificar isto un pouco.
E se houbese un xeito para que nós en realidade, sempre interactuar sobre algunha lista
e só pasar este máxico funcionar unha variable que
representa unha función que queremos aplicar
para cada elemento desta lista.
Isto trae o concepto do que son chamadas de funcións de orde superior.
E iso é basicamente o que este é, é que podemos crear unha función.
>> E neste caso, chámase mapeador, só para darlle un nome, só
cartografía sobre cada único elemento nunha lista.
Onde eu tomar unha lista e eu levo unha función.
E esa función, por suposto, ten unha certa sinatura.
El acepta como un dobre parámetro e vai saída é un dúo.
E todo o resultado esta función vai
para ser unha nova lista que é do tipo double.
OK?
>> E o que eu vou facer é aplicar esta función f
cada elemento na miña lista.
E reply-- e si volver esta nova lista, como resultado, o que é moi legal.
Agora podo pasar funcións arredor.
E esa idea de orde superior funcións é realmente importante.
E iso é realmente só mapeador implementación do home pobre
dunha función que está construído en Swift chamado mapa.
E fai xustamente iso, quizais ata un pouco mellor.
>> Esta é só unha especie de xenérico, versión simplificada que
nos permite ver o concepto que se aplica aquí.
Agora mire para o camiño que eu Pode realmente aplicar o meu cadrado
e as miñas funcións de cubo a esta lista de números.
Eu corro o meu mapeador.
I proporcionar a el miña lista de números.
I proporcionar-lle o do función que está a suceder
a aplicar a cada un destes índices.
E iso vai ser saída como un resultado.
E eu vou comezar a ver que eu cadrado e en cubos meus números como resultado.
>> E, por suposto, o mapeador tomará calquera tipo de función anónima.
Podemos ata ver que eu creei unha nova función anónima que
só ten algún parámetro e divídese o por dous.
E podemos ver que eu teño, de feito, divididos miña lista por 2 en vez.
Legal?
De momento, todo ben?
Todo ben, agora imos volver a esta idea.
Imos implementar esta de volta en no contexto dun sistema de notas.
>> E se eu fai iso, podemos ver que eu poida aplicar unha gran variedade destes opções--
ou unha gran variedade de estes funcións de orde superior
para realmente simplificar a miña capacidade de facer unha variedade de cousas sobre listas de números.
Así, por exemplo, se eu Dea unha lista de números,
unha das funcións de orde superior que existe chámase reducir.
O que fai reducir vez do mapa, é reducida vontade
tomar dous elementos na lista, terá algunha función que
compara os dous elementos de na lista e, a continuación, que vai
tipo de output-- o saída do que a función
será un elemento que Vostede, entón, comparar cos outros.
>> Entón, vostede podería usar isto para realmente suma dos números na súa lista.
Por exemplo, se tivese unha lista de 1, 2, 3, 4, 5,
dar os primeiros elementos, 1 e 2.
Pode aplicar a el un engadido función que leva estes dous elementos
e cospe un deses elementos, que sería o valor 3.
Entón nós tomamos ese valor 3 co seguinte elemento da lista, suma destes dous,
e entón siga indo para abaixo na lista.
>> Estamos reducindo o lista a un único valor.
E iso só acontece que o símbolo máis
é un operador, como acabamos de ver.
Este operador é en realidade, unha función que
ten precisamente esta lista que quere, en vez desas propiedades
que desexamos.
Entón eu encorajo-vos a Bótalle un ollo niso.
Quero tipo de movemento na dalgúns deste código
para que poidamos realmente ollar para algúns real real e verdadeira Swift, en Xcode,
en desenvolvemento IOS.
Pero bótalle un ollo iso e ver se poida
analizar a través de que está a suceder con algúns destes orde superior
incluíndo funcións de filtro, reducir, e mesmo
ver nalgún lugar aquí mapa tamén.
É aquí mesmo.
Onde será unha secuencia de clases e que vai realmente
mapea los usando a construción de rede, que pode recoñecer a partir de C,
pero en realidade é moito máis poderosa do que a construción de rede
que temos en C.
>> E nós imos aplicar iso a cada elemento da lista
e realmente prestar o grao de letra de cada
de todos estes graos usando estes conceptos que nos acabamos de falar antes.
Agora imos eludir por só un minuto e falar sobre estruturas.
E así estruturas son unha espera en C que nós foron capaces de definir un novo tipo de datos.
Structs existir dentro Swift.
E así facer unha chea de outras construcións chamados enums e clases, que realmente
levar esta idea a un nivel totalmente distinto.
>> E basicamente é só unha forma definición dun novo tipo de datos.
Entón, se get-- se vén en toda clase ou estruturas ou enumeracións,
non se confunden con iso.
É só a forma de definir algún novo tipo de datos.
E iso é realmente importante cando estamos a falar de desenvolvemento IOS app
porque todo o que existe dentro do app IOS
é esencialmente un obxecto dalgún tipo.
E un obxecto é basicamente un clase ou unha enumeración ou un struct.
>> Polo tanto, neste caso, eu son a definición dun novo tipo de datos
que eu estou chamando de avaliación iso é algunhas propiedades, incluíndo
un nome e unha secuencia de notas.
Entón, un tipo de avaliación que eu podería ter presente
sería quizzes, por exemplo.
Gustaríame ter un avaliación de que era un quiz
e que tiñan unha variedade de tipos asociado con que, por un cuestionario,
cuestionario dous, así por diante e así por diante.
>> Ou eu podería ter un tipo de avaliación dos conxuntos de problemas.
E podo facer as cousas.
Podo realmente ter funcións dentro deste tipo
de datos, que son agora chamados métodos.
Entón, se xa viu a método palabra, é realmente
é só unha función que se aplica para unha clase moi específica,
ou a un tipo moi específico de datos.
Ela nos permite modificar os datos dentro.
>> Polo tanto, noutras palabras, se eu queira engadir unha nota a miña valoración,
entón todo o que eu teño que facer é achegar a puntuación que se entrada
para esta función a miña propiedade interna.
Hai outra construción puro aquí en Swift, que é este dot dot dot
operador, o que significa que as puntuacións pode agora aceptar calquera número de enteiros.
E puntuación será un matriz de enteiros que
pasasen á miña función, que significa que podo facer cousas como esta.
>> Podo non engadir notas e só proporcionar números arbitrarios de números enteiros para el
e, en realidade, ser proporcionada unha matriz estes valores na miña función
ou no meu método, como é o caso.
Agora isto é importante porque todo no Xcode, todo en iOS,
é de feito un obxecto.
Polo tanto, manter isto presente cando nós estouramos Xcode aberta
e avance alén iOS versións de dous e tres
e, en realidade, pasar a versión de catro.
>> E, de novo, todo isto vai ser remitidas na páxina do seminario.
IOS catro é unha especie de plena explotado implantación dun app moi básico.
E o que este app fai é leva unha interface de usuario, que se parece con isto.
De novo, se eu premer no storyboard que pudermos ver que iso é o que parece.
Esta é a interface de usuario.
Ten un título na parte superior.
Eu chamei el galería web.
>> No medio hai un elemento chamado a visualización da imaxe UI.
E na parte inferior hai un barra de ferramentas cun único botón que
ten espazos elásticos que permiten que el centro no medio desta barra de ferramentas.
E o que pasa é que, cando este leva-a descarga dun arquivo JSON que é
contido no servidor noutro lugar, analiza o ficheiro JSON,
eo arquivo JSON parece un pouco con iso.
O ficheiro JSON parécese iso.
Non é.
>> Ten un nome de disco e que ten un conxunto de fotografías.
Cada unha desas fotos teñen un nome e tamén
unha URL que se representan a jpeg versión de que foto individual.
Entón, o que pasa é que cando este programa cargas, el baixa o ficheiro JSON,
analiza-lo, pon todo iso en o equivalente dunha matriz en iOS
desenvolvemento de aplicacións, o que é un NSArray.
E entón eu podo entón cargar estes datos nunha aplicación
e cargalo na miña pantalla.
>> Existe unha imaxe que procede co botón na parte inferior.
Se eu premer en Obter imaxe seguinte, el, entón tira aquela imaxe a partir da Internet
e substitúe a imaxe na visión imaxe UI.
Entón podes baixar este e realmente Bótalle un ollo no seu ordenador.
E constrúe-lo e, en realidade, recompila-lo para o seu dispositivo.
Pero o proceso foi esencialmente iso, cree o storyboard--
ou mellor, non create-- pero seleccionar o storyboard.
E, de feito we'll-- se non mente-- imos dar só un par de segundos
para realmente amosar-lle como isto foi feito.
>> Só que como podemos realmente conseguir isto faise un pouco máis
aparente.
Aplicación visión única, eu son vai chamar este seminario
catro representando este número particular.
Salva-o no escritorio.
OK, imos premer o storyboard.
E o que eu vou facer é atopar o meu punto de vista de imaxe,
arrastra o para o meu usuario interface e centro-lo.
Agora é só centrándose o desgraza non vai facer moita cousa,
agás a unha pantalla que é este tamaño exacto.
>> Así, podemos convencer de que por premendo sobre esa cousa de matrimonio círculo,
derrubar esa pop up menú aquí e cambiar
para previsualizar, onde nós imos realmente ter a oportunidade de ver como
iso vai realmente ollar noutros dispositivos.
Como podemos ver, non temos aínda velo neste caso particular.
Entón, eu vou pechar iso de momento.
>> E eu estou indo para seleccionar esta icona para abaixo no propio
porción inferior da pantalla.
Di Resolver problemas de deseño Auto.
Sentímolo, é cortado na parte inferior.
Pero se eu premer en que, o que eu obter este é pop up-- ir.
O que vexo é esta pop up que me permite engadir restricións en falta.
E facendo que Logo tipo de bloquea-lo
na porción central da pantalla como eu podería esperar.
>> Agora, a fin de obter este botón no enriba del, eu teño ir ao editor.
Ir Embed en e prema Controlador de navegación.
O que vai facer é que engadirá todo este outro compoñente a ela,
pero vai realmente enlace Lo de volta á miña UI inicial.
E os detalles, unha vez máis, non realmente se preocupe agora.
Pero quero ter un barra de ferramentas da parte inferior.
Entón, eu vou comprobar Shows Toolbar.
>> E iso proporciona dentro do meu punto de vista, que agora está noutro lugar,
vemos que está conectado por aquí.
El agora ofrece unha barra de ferramentas na parte inferior da miña UI.
Entón, agora, en vez de seleccionar un visualización da imaxe, podo atopar unha etiqueta,
ou mellor, un toolbar-- imos ver, onde é iso?
Cal é mesmo nome?
Un elemento button-- bar-- item-- sorry-- bar elemento de botón.
Plop que alí e aplicar un par espazos de flexibilidade de ambos os dous lados
para que, en realidade, o centro.
Entón agora eu creei a miña UI, basicamente.
E podo darlle un nome por premendo dúas veces na parte superior
aquí e dicindo galería web e así por diante.
Agora, de novo, estes son elementos que existen por si só.
E eu teño que chamar los para o meu código que
Podo facer por traer de novo -Se esta icona dobre círculo,
cambiar a partir do previsualización.
Que, por certo, agora podemos ver é ben centrado e vai estar ben
sobre unha variedade de dispositivos.
>> Cambiar a modo automático, que vai abrir o código ViewController.
E agora esta parte é importante.
Para que conectar estes dous elementos, o código para a interface de usuario,
selecciona o elemento que quere conectarse.
Polo tanto, neste caso, nós Realmente quere codificar
cambiar a imaxe que está contido dentro desta visión imaxe UI.
Entón, se controlar click de a visualización da imaxe e arrastra,
notarás que ten un pouco de bar, cando deixar de ir todo isto pop
up debería ocorrer.
>> E el di que imos crear unha conexión.
E a partir de aquí quero darlle un nome, algo así como galería.
Prema Intro.
E iso, en realidade, ofrece Galería variable chamada
que eu poida facer referencia no meu código para cambiar a imaxe, por exemplo.
Entón, como é que o código realmente ollar?
Ben de novo, eu non quero gastar moito tempo con iso.
E eu encorajo-vos a baixa-lo e dar un ollo.
Pero un dos máis aspecto importante é o código
que realmente obtén unha imaxe.
>> Polo tanto, neste caso quero para obter dentro das miñas fotos
matriz, que está contido dentro da miña clase.
Quero definir o nome ea URL que foi analizado fóra deste JSON.
De feito pedir o dispositivo para obter o URL, para buscar o URL a partir deste,
e, a continuación, obter os datos a partir de o contido dese URL.
Logo converter eses datos nunha imaxe pasando a para a imaxe de UI.
Entón, de novo, estes son todos distintos tipos de obxectos, distintos tipos de clases.
>> E entón eu podo axustar o meu gallery.image igual a estes datos.
E ese é o tipo de carne de que, en realidade, é entón
capaz de cambiar cambiar os datos de-- a imaxe dun a outro.
Entón, de novo, espero que agora moitas das construcións
vai facer un pouco máis de sentido.
Teña en conta que hai algún puntos de exclamación aquí.
Os puntos de exclamación son esencialmente relacionada cos opcionais.
>> O que eu estou dicindo é basicamente que mesmo sen consultar
a ver se non hai datos dentro desta opcional,
Eu estou indo a ir adiante e asumir que existe e desenvolve-la.
Lembre que usamos a analoxía de especie de un paquete para os opcionais
e necesitamos a desembrulhar o embalaxe e tirar os datos para fóra.
O punto de exclamación forzas que realmente acontece.
>> Pero sei que iso é seguro porque eu chequei
a ver se os datos de imaxe é igual a cero, realmente comprobar
a ver se ese opcional era, en realidade, non.
Se isto tivese, de feito, xa fallou.
E entón eu estou seguro que cando chegar a este punto podo desembrulhar con seguridade que os datos.
Tamén pode velo en a forma dun signo de interrogación.
Entón, se nós descenda ata onde eu precisa realmente analizar os datos.
>> Polo tanto, non se deixe levar polo este tipo de nomes longos.
Podes atopar na mazá creador do sitio web unha morea
de referencias a todo obxectos e todos os procesos
que, en realidade, facer isto posible.
Pero teña en conta que este é esencialmente unha función onde pasar uns datos.
E eu volver algún tipo de datos.
E eu teño usar isto como palabra clave para convertelo en este NSDictionary?
Cal é, de novo, unha NSDictionary opcional.
Que eu entón precisa comprobar a ver se el existir.
>> Entón, podo usar que, se deixar equals éxito analizado,
entón eu sei que ese opcional realmente contén algúns datos.
Ou o que eu fixen aquí foi a basta asumir que, se hai
houbo erros que é de feito seguros.
Todo ben, quero agradecer a todo moi por vir.
Sei que foi moi, pero foi só unha hora
para falar sobre algúns cousas moi avanzada.
E por iso espero que vai ter un oportunidade de baixar todo o código
e dar unha mellor, máis profundo ollar para el.
Ordenar convencer-se de todo das cousas que está a suceder.
E quero agradecer a vostede todo, unha vez máis, por vir.
E boa sorte con proxectos finais.
Ten un gran día.