>> DANIEL Armendáriz: Xin chào, tất cả mọi người, chào đón để phát triển ứng dụng iOS
với nhanh chóng.
Tôi Dan Armendáriz.
Tôi precepter của máy tính khoa học ở đây tại Trường
Kỹ thuật và khoa học ứng dụng.
Và nhanh chóng là thực sự loại của một ngôn ngữ thực sự gọn gàng.
Và tôi có một số kế hoạch cho ngày hôm nay.
Vì vậy, trong một giờ tới hoặc lâu hơn, chúng tôi đang đi nhìn vào iOS phát triển ứng dụng riêng của mình
sử dụng Xcode và thực sự tạo ra một số rất cơ bản, ứng dụng rất đơn giản.
Và nhìn vào cách mà bạn thực sự có những ứng dụng,
và xây dựng chúng, và thực sự đặt chúng trên một thiết bị iOS.
Một số trong những điều mà chúng ta sẽ không nhìn vào
sẽ bao gồm những thứ như thực thi một ứng dụng
và đặt nó trên cửa hàng ứng dụng.
Có rất nhiều hướng dẫn trực tuyến sẽ giúp bạn với điều đó khía cạnh của nó.
Nhưng cũng bởi vì như một phần của CS50, bạn nhận được
tham gia phát triển của Apple nhóm, nhóm phát triển ứng dụng của CS50.
Nếu bạn không làm điều đó được nêu ra và bạn đang liên kết với CS50,
Tôi khuyên bạn nên làm điều đó bởi vì đó
là làm thế nào bạn có thể tạo ra một số chương trình trong Xcode,
xây dựng chúng, và thực sự đặt chúng trên một số thiết bị iOS của bạn
nếu bạn thực sự có một thiết bị iOS vật lý.
Nếu bạn không có một iOS vật lý thiết bị đó là nhiều hơn tốt.
Bạn thực sự có thể phát triển cho iOS.
Và Xcode có một mô phỏng cho phép bạn
để xem ứng dụng của bạn trong hành động trên máy tính của bạn.
Nhưng nó loại là một điều gọn gàng để thực sự chơi và tương tác
với ứng dụng của bạn trên một thiết bị thực tế.
Vì vậy, có một vài yêu cầu để thực sự làm tất cả của sự phát triển này.
Một trong số đó là bạn phải có một máy Mac.
Nó phải được chạy 10.9.4 hoặc mới hơn để làm phát triển nhanh chóng với.
>> Bạn có thể sử dụng một đầu Phiên bản để phát triển
với Objective C cho iOS và Mac.
Nhưng tôi đề nghị, và rất nhiều các ví dụ mà chúng ta sẽ thấy ngày hôm nay,
sử dụng 10.10 Yosemite.
Vì vậy, nếu bạn chưa nâng cấp, đó là một lý do tốt để làm như vậy.
Bây giờ Xcode 6.1 là phiên bản mới nhất của môi trường phát triển tích hợp
mà Apple cung cấp miễn phí mà bạn có thể tải về từ cửa hàng ứng dụng.
Và tôi khuyên bạn cũng chạy phiên bản mới nhất.
>> Nếu bạn tình cờ được chạy trước phiên bản, Xcode 5 và dưới đây chỉ
chỉ đơn giản là không hỗ trợ nhanh chóng nào.
Và các phiên bản beta của sáu, đã được phát hành trong mùa hè,
không hỗ trợ nhanh chóng, nhưng có được một số lượng rất lớn
những thay đổi trong ngôn ngữ, đủ để mã mà bạn
sẽ xem xét và bạn có thể tìm thấy trên internet
sẽ không thực sự biên dịch đúng trong các phiên bản trước của Xcode.
Vì vậy, một lần nữa, nếu bạn làm chưa có một tài khoản nhà phát triển,
Tôi khuyên bạn nên đi đến developer.apple.com.
Đăng ký, tạo một tài khoản nhà phát triển, và tham gia vào đội ngũ phát triển ứng dụng CS50.
Điều đó sẽ cung cấp cho bạn một cơ hội để biên dịch các ứng dụng của bạn
và đặt chúng trên thiết bị của bạn.
OK, vì vậy, hãy bắt đầu.
Điều đầu tiên chúng ta sẽ làm được
để thực sự tạo ra một rất Dự án đơn giản trong Xcode
mà sẽ cho phép bạn làm cho một ứng dụng.
>> Vì vậy, nếu bạn chưa có Xcode mở, đi trước và mở nó
và tạo ra một dự án mới.
Một màn hình đặc biệt sẽ mở ra và sẽ cung cấp cho bạn
một số tùy chọn về những gì nó là bạn muốn làm.
Chỉ cần nói rằng bạn muốn tạo một dự án mới, một ứng dụng mới.
Cửa sổ này sẽ bật lên, giả sử bạn đang sử dụng Xcode 6.1.
Ngay bây giờ, và cho Thời gian của buổi hội thảo này,
chúng ta sẽ được sử dụng xem ứng dụng duy nhất, chỉ
sắp xếp của một ứng dụng cơ bản để có được chân của bạn ướt.
Và bạn có thể chi nhánh ra ngày của riêng bạn từ đó.
>> Nhấn Next ở thời điểm này.
Bây giờ ở đây có một vài điều mà bạn có thể muốn nhập.
Tên sản phẩm là đặt tên cho dự án của bạn.
Trong trường hợp này, tôi chỉ sẽ gọi nó Seminar1
bởi vì nó là ví dụ đầu tiên của chúng tôi.
Tên tổ chức, trong trường hợp này chỉ là tên của tôi.
Tất nhiên bạn có thể thay đổi nó tên riêng của bạn, hoặc để CS50.
Nhận dạng tổ chức, nếu bạn xảy ra để có một trang web chỉ mất
tên miền trong ngược lại, com.yourname.
và sau đó là tên của sản phẩm sẽ xuất hiện tự động
sau đó như nhận diện bó.
>> Rõ ràng là các ngôn ngữ mà chúng tôi sẽ được sử dụng cho ngày hôm nay là nhanh chóng.
Bạn có thể, tất nhiên, sử dụng Objective C cho rằng, nhưng ngày hôm nay sẽ được nhanh chóng.
Và chúng tôi sẽ cho bây giờ nói các thiết bị phổ quát, vì vậy
nó hoạt động trên cả iPad và iPhone.
Và chúng ta sẽ rời khỏi lõi dữ liệu không được kiểm soát để giữ
dự án tương đối đơn giản trong thời gian này.
Vì vậy, chúng ta hãy đi trước và bấm Next.
Và nó sẽ hỏi tôi nơi mà tôi muốn lưu nó.
Tôi sẽ chỉ cần lưu nó vào máy tính của tôi bây giờ.
>> Được rồi, vậy bây giờ đây là những gì sẽ xảy ra khi bạn thực sự mở Xcode.
Và nhận thấy rằng Điều đầu tiên mà bạn nhìn thấy
là dấu chấm than này nói không có bản sắc ký được tìm thấy.
Tôi cố tình làm điều này trên máy tính của tôi và tôi
hy vọng rằng tôi sẽ có thể thực sự sửa chữa nó,
vì tôi muốn bạn để xem cách này sẽ thực sự làm việc trên máy tính của riêng bạn.
>> Hãy kích vấn đề sửa chữa.
Nó sẽ hỏi bạn nếu bạn có một tài khoản nhà phát triển táo hiện có.
Đây là nơi mà gia nhập CS50 nhóm phát triển ứng dụng
là rất quan trọng để bạn không chỉ có một tài khoản ứng dụng,
nhưng bạn cũng có năng lực để ký các ứng dụng
và đặt chúng trên thiết bị iOS của bạn.
Đây là cách kích not-- vấn đề sửa chữa là không cần thiết
nếu bạn chỉ cần đi tới xây dựng và phát triển địa phương,
hoàn toàn trong trình giả lập iOS.
>> Nhưng bây giờ tôi đang đi để phát triển và đặt chúng
trên iPad của tôi, đó sẽ là có thể phát sóng là tốt.
Vì vậy, tôi muốn thực sự thêm này.
Và nó sẽ hỏi tôi cho ID apple của tôi.
Vì vậy, nó sẽ được điều này.
Và tôi phải lấy của tôi mật khẩu, mà là ở đây.
Vì vậy, cho tôi chỉ một giây để thấy rằng, và sao chép, và dán nó ở đây.
>> Nhấp vào Thêm.
Nó sẽ hỏi tôi mà đội bóng tôi muốn tham gia.
Tôi sẽ làm học kỹ thuật.
Bấm Tham gia.
Rất tiếc, đó là một sai lầm.
Hãy làm điều này.
Hy vọng rằng một trong đó sẽ làm việc.
Một điều đó vẫn không làm việc.
Chúng tôi đang chạy ra khỏi những cái tốt ở đây.
OK, cái này nên làm việc.
Bây giờ đóng đó.
Bây giờ chúng ta hãy làm trường kỹ thuật, nhấp chọn.
>> Và bây giờ hy vọng sau một vài giây, bạn can-- OK,
Tôi sẽ thu hồi và yêu cầu.
Oh man, điều này sẽ không làm việc.
OK, tôi sẽ cố gắng một khác nhau.
Hãy làm điều này ở đây.
Trình diễn trực tiếp được không tôi.
Chúng tôi có thể trở lại chỉ xây dựng hoàn toàn tại địa phương,
nhưng đó sẽ là OK trong trường hợp này.
>> Vì vậy, ở đây, trong khi điều này là thực sự làm việc, những gì chúng ta sẽ làm là chỉ cần
tạo ra một rất đơn giản Xin chào thế giới ứng dụng.
Vì vậy, đây là Xcode.
Và nếu bạn không nhìn thấy nó nữa, nó có thể là một chút đáng sợ lúc đầu.
Có rất nhiều tấm, có một rất nhiều doodads trong nhiều lĩnh vực.
Nhưng chỉ nhận ra rằng có thực sự một số thành phần chính
đến môi trường phát triển này.
Trên xa bên trái là tất cả các file có thể áp dụng cho chương trình của bạn
hoặc dự án cụ thể của bạn.
Chúng tôi sẽ phải click xung quanh trên một số trong số họ và chúng tôi sẽ
chỉ ra nhiều nhất cái quan trọng theo thời gian.
Về phía bên phải, chúng tôi có một tập các thuộc tính.
Và tất cả các thuộc tính, có là tấm khác nhau cho các thuộc tính.
Các tấm sẽ thay đổi tùy thuộc vào bối cảnh của các nội dung chính, đó
xảy ra để được ở giữa.
Bây giờ giữa các thực thể hiển thị bạn nhiều thứ, ví dụ
tự mã của bạn.
Hoặc bạn có thể thực sự khi have-- bạn click vào storyboard mà
là, bằng cách này, chỉ cần một đồ họa đại diện của người sử dụng của bạn
giao diện cho application-- của bạn sau đó cửa sổ các thuộc tính
trên bên phải rất sẽ thực sự thay đổi.
Bây giờ có một vài khác những điều mà tôi muốn chỉ.
Bạn có thể sắp xếp các khám phá xung quanh trong môi trường trên của riêng bạn.
Nhưng một trong những điều mà đã được rất hữu ích
là nút này ở đây, trên bên phải của cửa sổ.
Có nút này trông giống như trên xa
còn lại nó có một đoạn tiếp theo là hai vòng tròn và loại
hai mũi tên chỉ xa nhau.
Nếu bạn chuyển đổi giữa các soạn thảo tiêu chuẩn, trong đó
là một xa bên trái, một trong những đó là lựa chọn mặc định,
và hai vòng tròn chồng chéo nhau, những gì bạn thực sự nhận
là một panel kép.
>> Và điều này là thực sự sẽ giúp ích cho chúng tôi
khi chúng ta cần phải liên kết các hạng mục trong giao diện người dùng để mã.
Và chúng ta sẽ nói thêm về mà chỉ trong một khoảnh khắc.
Nhưng nhận ra rằng nếu bạn nhận được thậm chí nhiều tấm như thế này,
bạn có thể đơn giản hóa tầm nhìn của bạn chỉ một chút bằng cách nhấn trở lại
về biên tập duy nhất của bạn.
Cho đến nay rất tốt.
Vì vậy, về cơ bản, chúng tôi có các mã trên bên trái, các thuộc tính bên phải,
và bất cứ điều gì nó là chúng tôi đang làm việc trên đây ở trung tâm.
>> Vì vậy, ở đây tôi đã nhấp trên kịch bản chính.
Và kịch bản, một lần nữa, là một cách trong Xcode
mà bạn thực sự có thể tạo ra sử dụng của bạn Giao diện sử dụng chỉ cần kéo và thả
kỹ thuật.
Và như vậy cho chúng tôi rất Ứng dụng đầu tiên này
chính xác là những gì chúng ta sẽ làm.
Chúng ta sẽ đi xuống phần rất xa dưới bên phải
của màn hình, trong đó có chứa một loạt các yếu tố người sử dụng
mà sau đó bạn có thể nhấp chuột và kéo để tạo ra các giao diện người dùng của bạn.
>> Bây giờ tất cả các yếu tố này được gọi là quan điểm
vì nó cung cấp một số loại xem.
Có một điểm ảnh, cho Ví dụ, để thực hiện
một hình ảnh về giao diện người dùng.
Có một xem bảng để thực hiện một bảng.
Vv và vv.
Có một loạt các quan điểm mà bạn có thể chọn ở đây.
Vì vậy, chỉ cho bây giờ chúng ta sẽ để tìm kiếm cho một nhãn.
Bạn chỉ có thể di chuyển qua tất cả các danh sách đó là có.
Nhưng có những tìm kiếm thanh ở dưới cùng
mà làm cho nó dễ dàng hơn để xác định quan điểm cụ thể mà bạn thực sự
muốn kéo vào giao diện người dùng của bạn.
>> Tìm thấy nhãn của tôi.
Tôi sẽ kéo nó ở đây, trực tiếp vào ứng dụng mẫu của tôi.
Ngay ở đó ở giữa có vẻ tốt.
Và tôi sẽ gõ "Hello World!"
Nhấn Enter.
Bây giờ tôi có một nhãn.
Nó không giống như nó trung khá đúng.
Vì vậy, tôi có thể thử lại trung tâm đó.
May mắn thay nó cung cấp các hướng dẫn để làm cho mọi việc dễ dàng hơn nhiều.
Tôi sẽ cố gắng để biên dịch nó.
Hy vọng rằng nó sẽ thực sự làm việc ở đây.
Và nếu không, chỉ trong một khoảnh khắc trong thực tế, nó sẽ xuất hiện trên iPad của tôi.
Nó ở ngay đây.
Có nó là.
>> OK, vì vậy đó là nó.
Chúng tôi đang thực hiện.
Chúng tôi đã tạo ra rất của chúng tôi Ứng dụng đầu tiên.
Bây giờ rõ ràng là điều này không làm bất cứ điều gì.
Nó chỉ là một nhãn.
Không có kết nối giữa giao diện người dùng và các mã.
Vì vậy, nếu chúng ta thực sự muốn để tạo ra các kết nối này,
nếu chúng ta thực sự muốn có một số loại thông tin liên lạc giữa các yếu tố
tồn tại trên màn hình và mã số đó
cho phép chúng ta kiểm soát những yếu tố, sau đó
chúng tôi thực sự cần nhìn vào bản thân mã.
>> Vì vậy, đây là những gì được gọi là ViewController.swift.
Và đối, đặc biệt là đối với vài chương trình đầu tiên của bạn,
này là có được sắp xếp của phần lớn các mã mà bạn enter--
là có được trong tài liệu này ở đây.
Có rất nhiều thứ đó là ở đây cho đến nay, phải không?
Có giao diện người dùng nhập khẩu lớp kit, ghi đè lên, [? funk,?] tất cả những điều khác nhau.
Và nó không hoàn toàn rõ ràng những gì nó là tất cả các phương tiện này.
Vì vậy, hãy lùi lại một bước đi từ Xcode cho một chút
và xem xét ngôn ngữ riêng của mình, nhanh chóng.
>> Vì vậy, với nhanh chóng, đó là trong thiết kế và phát triển
tại Apple trong khoảng bốn năm để hiểu biết của tôi.
Và có một vài tính năng về nó mà là thực sự gọn gàng.
Trước hết, nó được biên dịch ngôn ngữ, giống như C.
Vì vậy, đầu tiên bạn phải biên dịch nó và sau đó chạy nó
trước khi bạn có thể thực sự thực thi các mã có kết quả.
Nhưng là, không giống như C, một tương tác nhắc nhở rằng bạn thực sự có thể chạy
và gõ lệnh tùy vào.
Và rất nhiều như một giao diện điều khiển JavaScript, mà bạn có thể quen với bây giờ,
nó thực sự sẽ đánh giá những lệnh và cung cấp cho bạn sản lượng.
Và họ đã thậm chí đưa đó để cấp độ tiếp theo
và họ đã tạo ra một cái gì đó gọi là sân chơi trong Xcode
cho phép bạn trực quan làm việc với mã.
Và chúng ta sẽ thực sự nhìn thấy một số ví dụ điều đó chỉ trong một chút.
Nó dựa trên nền tảng C C. nó, bởi vì tất cả các trình biên dịch
tạo mã ra khỏi C và tạo mã đối tượng từ nó.
Nhưng nó thực sự cổ phiếu tương đối ít cú pháp.
Nó sẽ trông khá khác nhau.
Sẽ có một số điểm tương đồng.
Nhưng có sẽ được khá một vài sự khác biệt
so với, nói, JavaScript hay PHP.
Và chúng tôi sẽ chỉ cho các ra chỉ trong một khoảnh khắc.
>> Bây giờ một trong những điều lớn nhất về nhanh chóng đó là tốt đẹp
là, đặc biệt là so C, nó có nghĩa là để được an toàn.
Tất cả mọi thứ trong đó là có nghĩa là để được đánh máy rất mạnh mẽ trong.
Trong thực tế, nó là gần như khó chịu Lúc đầu, khi bạn lần đầu tiên
bắt đầu làm việc với nhanh chóng, chỉ cần như thế nào nhiều chính quyền áp dụng các loại ở khắp mọi nơi.
Bất cứ điều gì đó là một chuỗi phải duy trì một chuỗi.
Nó rất khó để sắp xếp của chuyển đổi nó hoặc ép buộc nó vào một số hình thức khác.
>> Và một lần nữa, chúng ta sẽ thấy những ví dụ về điều này.
Nhưng cuối cùng nhận ra rằng này là có nghĩa là để bảo vệ bạn,
và bởi bạn tôi có nghĩa là mã của bạn, từ đâm vào một cách khủng khiếp khi
bạn có một số loại loại không phù hợp.
Và một lần nữa, làm việc với nó.
Bởi vì nó sẽ là bực bội ở đầu tiên như bạn cố gắng tìm ra lý do tại sao chính xác
bạn đang nhận được bất thường này lỗi đối phó với các loại.
Nhưng nó sẽ được giá trị nó cuối cùng.
>> Nó đối phó với tự động quản lý bộ nhớ,
nên không còn làm bạn phải đối phó với những điều
như malloc và miễn phí và tất cả các loại vật.
Và nó cũng được thiết kế để chỉ nói chung chung.
Vì vậy, trong khi chúng ta có thể sử dụng một Xcode để tạo ra các ứng dụng iOS và các ứng dụng Mac,
chúng ta cũng có thể chỉ cần sử dụng nó như là một ngôn ngữ kịch bản.
Và vì vậy chúng tôi có thể sử dụng nó loại thay vì của PHP hoặc thay
của Python để thực sự nhanh chóng phân tích và quá trình
một số dữ liệu mà chúng tôi có trên máy tính của chúng tôi.
>> Nó có một loạt các hiện đại tính năng, optionals, đột biến,
generics, đóng cửa, và rất nhiều này những thứ bạn có thể hoặc không thể nhận ra.
Và nó chỉ là một loại bất hạnh một phần của ngôn ngữ mà một số trong những
loại tương lai, các yếu tố hiện đại được chứa trong các yếu tố này
quá sâu thâm căn cố đế mà tôi thực sự sẽ phải dạy bạn CS50.5 một chút.
>> Chúng ta phải tìm hiểu một chút ít hơn về một số tính năng trong trật tự
để thực sự hiểu những gì đang xảy ra trên và do đó bạn có thể nhìn vào mã
và không cảm thấy hoàn toàn bị mất.
Và bạn sẽ thấy những gì tôi có ý nghĩa bởi điều đó chỉ trong một phút.
OK, vì vậy let's-- đủ rồi loại công cụ lý thuyết.
Hãy nhìn vào thực tế của chúng tôi Chương trình nhanh chóng đầu tiên.
Đó là một dòng mã.
Line 14 ngay tại đây, nó nói in l n chào CS50.
>> Vì vậy, có một vài điều đó rất khác nhau về điều này so
đến những điều mà bạn có thể có sử dụng từ C, ví dụ.
Một trong số đó là không có intmain, không bao gồm phần,
có không có thêm các công cụ này.
Bao gồm, như tiêu chuẩn I / O, như các thư viện
mà thực sự cung cấp năng cơ bản của ngôn ngữ,
sẽ tự động được bao gồm như là một phần của thư viện chuẩn nhanh chóng của
và có thể tự động nhập khẩu.
Bạn không cần phải làm mà nhập bằng tay.
>> Intmain không tồn tại bởi vì điểm vào chính cho các mã
là thực tại bắt đầu của mã.
Vì vậy, bất kỳ mã mà bạn có bắt đầu từ đầu
sẽ thực sự được thực hiện vào lúc bắt đầu.
Vì vậy, đây thực sự đơn giản hóa rất nhiều.
Cũng nhận thấy, rằng không có dấu chấm phẩy.
Không có dấu chấm phẩy trong ngôn ngữ này.
Bạn đặt một tuyên bố trên một dòng riêng lẻ
và sau đó các dòng tiếp theo đại diện các báo cáo khác.
Nếu bạn muốn đặt báo cáo mulitiple trực tuyến,
sau đó bạn phải tách nó bằng dấu chấm phẩy.
Nhưng đối với hầu hết các phần, cho phong cách tốt, chúng tôi
sẽ không bao giờ nhìn thấy các dấu chấm phẩy cho mục đích của báo cáo tách
trong nhanh chóng.
Vậy làm thế nào thực hiện điều này thực sự làm việc?
Vâng rất giống C chúng tôi thực sự cần phải biên dịch này.
Và vì vậy chúng tôi có thể làm điều đó bằng cách sử dụng nhanh chóng c và sau đó 1.swift.
Và sau đó sau một vài phút này sẽ biên dịch
và sau đó tôi có thể chạy một item.
Và hơn nó chỉ sẽ nói "Xin chào CS50."
Awesome, do đó chúng tôi đi.
Có chương trình hello thế giới đầu tiên của chúng tôi.
Hãy chuyển sang số hai.
>> Bây giờ trong this-- này đã thay đổi hơi, bởi vì trong khi thông thường bạn
do-- trong thực tế luôn luôn làm bạn phải biên dịch một ứng dụng nhanh chóng trước khi bạn
thực sự chạy một it-- trong những tính năng tuyệt vời
mà tôi đã đề cập đến trước khi được rằng nhanh chóng thực sự có thể được sử dụng trong các loại
của một chế độ giả diễn giải, có trong thực tế, như một thông dịch viên.
Nhưng điều này sẽ làm là có là, trên thực tế, một ứng dụng nhanh chóng
mà bạn có thể chạy.
>> Vì vậy, ví dụ nếu bạn chỉ cần gõ nhanh chóng ở đây, điều gì sẽ xảy ra
là bạn sẽ nhận được một nhắc nhở.
Và bạn có thể gõ nhanh chóng của bạn code, in hello, và chạy nó.
Và nó sẽ thực sự print-- tốt, nó không được in trong trường hợp này
bởi vì nó được in để làm trung tâm ra, đó là không thể nhìn thấy ở đây.
Nhưng nó thực sự có thể hoạt động.
Và như vậy trong trường hợp này, tôi chỉ sẽ sử dụng điều này như một kịch bản.
Và tôi thực sự có thể chạy mã này ở đó.
Vì vậy, cách mà tôi thực sự chạy nó sẽ hơi khác nhau,
nhưng bạn sẽ thấy rằng chỉ trong một khoảnh khắc.
Bây giờ, trong trường hợp này những gì chúng ta đang đi làm là đầu tiên xác định một biến.
Vì vậy, đây là cách chúng ta định nghĩa một biến trong nhanh chóng,
được chúng tôi sử dụng các từ khóa let, tiếp bởi tên của biến,
và sau đó chúng tôi cung cấp một số khởi tạo dữ liệu tùy chọn.
Vì vậy, trường hợp này chúng tôi đang xác định một hằng số gọi tên,
và chúng ta sẽ sử dụng trong đầu ra của dòng in của chúng tôi
ở rất dưới, hello tên.
>> Bây giờ để ý rằng, thay vì sử dụng% s, chúng ta có thể gói gọn tên này
biến trong / () và có thể tiếp nhau trong nội dung này
chuỗi thành chuỗi này.
Bây giờ không giống như C, chuỗi là một loại thực thực tế nhanh chóng.
Và do đó, nó ngồi bên cạnh ints và dọc
tăng gấp đôi rất dễ dàng và tự nhiên so
để một số khác ngôn ngữ mà chúng ta đã thấy.
Vì vậy, đây sẽ thực sự hoạt động giống như bạn mong đợi.
>> Tôi có thể chạy 2.swift.
Và chúng ta thấy rằng tên của tôi là thực sự ghép trong, "Hello Dan."
OK, tuyệt vời.
Chuyển sang số ba.
Bây giờ nó là một chút một lời nói dối trắng mà tôi
nói rằng cách mà chúng ta khai báo biến là sử dụng các từ khóa cho phép.
Như nhiều lần như bạn có thể bạn có thể làm muốn sử dụng để cho, vì những gì mà thực hiện
là nó định nghĩa một hằng số.
Và đó nói rằng nó có thể nhanh chóng tối ưu hóa tốc độ của ứng dụng của bạn
bởi vì nó biết rằng đó biến sẽ không thay đổi.
>> Vì vậy, đánh giá một cách cẩn thận khi bạn đang sử dụng
một biến cho mục đích của việc thay đổi nó.
Và khi bạn đang đi tới tạo ra một biến chỉ
để giữ một số dữ liệu và đó là không thực sự sẽ thay đổi.
Vì vậy, khái niệm này về tính bất biến, nó không thực sự sẽ thay đổi,
là một trong những quan trọng ngay cả khi xa xuống như định nghĩa các biến.
Vì vậy, ở đây chúng tôi đã xác định một tên, cho tên, và trong trường hợp này
nó là một hằng số, đó là loại chuỗi, và nó là bằng với Dan.
>> Vì vậy, trong khi ở trước phiên bản, nó infers-- và bởi "nó"
Tôi có nghĩa là nhanh chóng swift-- suy luận kiểu dữ liệu
rằng chúng tôi đã nhập vào các biến.
Trong trường hợp này, chúng ta có thể rõ ràng.
Vì vậy, hãy để sau đó tên này biến là tên, sau đó một tràng.
Và sau dấu hai chấm làm chúng tôi xác định các loại dữ liệu.
Vì vậy, không còn là nó int tên hoặc Tên chuỗi hoặc một cái gì đó như thế.
Nhưng thay vì để cho nhãn, chúng tôi xác định có hay không
nó không đổi hoặc biến, theo sau bởi tên,
tiếp theo là các loại tùy chọn.
>> Vì vậy, trong trường hợp này chúng tôi đang xác định Tên này là một chuỗi.
Chúng tôi đang nói là Dan.
Và bây giờ tôi có một biến khác, trong trường hợp này nó được gọi là nhãn.
Nhưng chú ý rằng nó là bắt đầu bằng từ khóa var.
Các phương tiện từ khóa var rằng biến này có thể
được thay đổi tại một điểm sau trong thời gian, ở đâu đó xuống trong mã
chúng ta có thể thực sự thay đổi đó và nó sẽ không cung cấp cho chúng tôi bất kỳ lỗi nào.
>> Chúng tôi có thể làm Kết nối chuẩn nhà điều hành ở đây bằng cách sử dụng dấu cộng
để thực sự thêm của chúng tôi tên thành chuỗi này.
Và sau đó chúng ta có thể in ra như chúng ta đã thấy chỉ một thời gian trước đây.
Bây giờ chúng ta hãy nói rằng bạn muốn tạo ra một biến
nhưng bạn không muốn khởi tạo nó chưa.
Bạn chưa muốn đặt bất kỳ dữ liệu bên trong nó.
Vâng, bạn phải nói nhanh chóng những gì các loại dữ liệu
là có được trước khi bạn có thể thực sự xác định nó đúng.
>> Vì vậy, trong trường hợp này, khi chúng ta đã xác định một biến gọi là lớp chúng ta phải
rõ ràng về loại hình của nó, bởi vì nó không thể suy ra chỉ là tìm kiếm
các dữ liệu khởi tạo mà bạn cung cấp cho nó.
Nó sẽ cung cấp cho chúng tôi một lỗi nếu bạn chỉ loại var lớp, ví dụ,
bởi vì nó không có loại do.
Vì vậy, lớp = 100.
Vì vậy, 100 là một số nguyên, nó phù hợp rất độc đáo vào đó.
Nó sẽ tiếp tục hoạt động.
Chúng ta có thể xem như thế nào thì chúng ta có thể nối này.
Bây giờ bạn có thể cám dỗ, nếu bạn thực sự
muốn ghép các lớp vào một chuỗi văn bản,
thành chuỗi khác, mà bạn sẽ chỉ sử dụng mà nhà điều hành Kết nối cùng.
Và đó thường sẽ là sự thật.
Nhưng nhanh chóng sẽ không cho phép bạn ngầm thay đổi các kiểu dữ liệu.
Vì vậy, trong trường hợp này, điều này dòng, 25 tuổi, sẽ thất bại
vì lớp là một số nguyên và không phải là một chuỗi.
Và do đó, có một không phù hợp đặt các loại.
Vì vậy, bạn phải rõ ràng khi bạn muốn thay đổi dữ liệu này,
khi bạn muốn ép buộc này dữ liệu vào một loại khác nhau
và nói, OK, tôi muốn để mất lớp này, đó là một số nguyên,
và chuyển đổi nó thành một chuỗi.
>> Vì vậy, tôi mất String một vốn của tất cả các loại, bạn sẽ nhận thấy, là hoa,
Int, Double, String, vv và vv.
Tất cả đều là vốn chỉ để làm cho mọi việc dễ dàng hơn.
Và chúng ta sẽ nói tận Chuỗi truyền vào nó lớp.
Và nó sẽ tạo ra một chuỗi ra số nguyên đó.
Và sau đó chúng ta có thể tiếp nhau hai rất độc đáo.
Mọi thắc mắc về công cụ này cho đến nay?
Được rồi, chúng ta hãy cày thông qua vị trí thứ tư.
>> Bây giờ chúng ta hãy nói về một số tiên tiến hơn cấu trúc, như mảng và vòng lặp.
Và không giống như C, mảng trong nhanh chóng không được đại diện bởi con trỏ.
Con trỏ trong nhanh chóng, mặc dù chúng tồn tại, được gọi là
như con trỏ không an toàn hoặc một số loại tương tự như thế này,
họ không tiếp xúc với bạn thông thường.
Vì vậy, nó trở nên rất khó khăn cho bạn thao tác
bộ nhớ trực tiếp của máy tính của bạn.
>> Vì vậy, các mảng chỉ là một kiểu dữ liệu.
Và họ đang tham chiếu sử dụng loại này ký hiệu khung của bây giờ chuẩn vuông
mà bạn đã nhìn thấy trước.
Nhưng khi bạn thực sự muốn định nghĩa một kiểu của một biến
như là một mảng của một số loại đặc biệt, sau đó bạn
đặt kiểu trong dấu ngoặc vuông.
Vì vậy, những gì tôi đang nói ở đây là Tôi đang tạo ra một biến gọi là
lớp của kiểu int array.
Và tôi đang thiết rằng bằng một số dữ liệu được khởi tạo, mà trong trường hợp này
là 100, 0, 90, 85, mà chỉ là một bộ sưu tập của lớp tùy ý ở đây.
Bây giờ trong trường hợp này tôi có thể, nhớ, loại bỏ các loại,
và nó sẽ có thể suy ra nó dựa trên các dữ liệu khởi tạo.
Nhưng nếu tôi loại bỏ điều này và Tôi cần thiết để cài đặt nó sau này,
sau đó tôi sẽ phải chắc chắn rằng tôi có các loại đó.
Được rồi, chúng ta hãy di chuyển dọc.
Vì vậy, chúng tôi can-- mảng cung cấp cho chúng tôi một loạt
các phương pháp thông qua đó ký hiệu dấu chấm tại bạn có lẽ quen thuộc với.
Vì vậy grades.count, ví dụ, cho chúng ta biết chính xác số lượng
của các yếu tố đó là chứa trong mảng này.
>> Nếu tôi muốn thêm additional-- giờ nhận thấy rằng đây là một var
và not-- này là một biến và không phải là một hằng số, mà
có nghĩa là tôi có thể thay đổi nội dung của mảng này, tôi có thể thêm các đối tượng để nó.
Nhưng tôi không thể chỉ nói lớp và sau đó trong dấu ngoặc vuông
bốn, vì đó sẽ là một ngoài giới hạn lỗi trong trường hợp này.
Nếu tôi muốn thực sự thay đổi kích thước của mảng này,
Tôi phải sử dụng phương pháp chấm append để thêm một cái gì đó trên cho đến cuối cùng của nó.
Tôi có thể, tuy nhiên, sự thay đổi chỉ số cá nhân.
>> Vì vậy, tôi có thể sử dụng lớp và sau đó ngoặc vuông
zero để thao tác đầu tiên chỉ số này và như vậy, như bạn thường mong đợi.
Và tôi có thể làm tương tự để thực sự nhận dữ liệu từ đó là tốt.
Bây giờ cũng có loại một phương pháp ưa thích để làm điều này, cộng với lớp equals
và sau đó chỉ số khác, mà sẽ append--
hoặc không khác index-- nhưng một danh sách khác
sẽ nối danh sách đó để sau của lớp.
Và các lớp sẽ sau đó chứa tất cả.
Nhưng đó là sắp xếp của một điều thêm rằng tôi chỉ hiển thị cho bạn cho vui.
>> Bây giờ có một vòng lặp for.
Và đây là sự bắt đầu của nơi mọi thứ bắt đầu thay đổi một chút.
Chú ý này cho vòng lặp là khác nhau từ các vòng trong C.
Bây giờ tôi sẽ lưu ý cho vòng trong Swift thể
được làm cho giống như vòng lặp for trong C, nhưng có rất nhiều cấu trúc hữu ích hơn
mà về cơ bản loại bỏ sự cần thiết để có cho var i bằng 0 dấu chấm phẩy i
là ít hơn so với một số chiều dài, vv và vv, phải không?
Và xây dựng này chỉ là một trong số họ.
>> Đối với chỉ số, chỉ số mới biến, trong trường hợp này, trong phạm vi.
Và những gì tôi đang nói là có một phạm vi từ 0 thì tất cả các con đường lên đến
nhưng không bao gồm grades.count.
Vì vậy, dấu chấm này chấm ít hơn dấu hiệu đại diện
một loạt các giá trị bắt đầu từ con số không tất cả các con đường lên đến grades.count trừ đi 1.
Có một riêng biệt điều hành tồn tại,
đó là dot dot dot, mà sẽ có nghĩa là tôi muốn phạm của zero
đến lớp tính toàn diện.
>> Nhưng trong trường hợp này, bởi vì những mảng là chỉ số không, chúng tôi tất nhiên
không muốn đi đến số lượng tối đa của lớp.
Tôi có thể tổng hợp các lớp, như bạn có thể mong đợi, và tất cả các đầu ra của công cụ này.
OK, di chuyển trên.
Bây giờ chúng ta hãy nói về chức năng.
Để xác định một chức năng bạn sử dụng các từ khóa funk.
Và một lần nữa, trong Swift bạn phải rất cẩn thận với các loại.
Bạn cung cấp cho nó các tham số bằng cách xác định, ví dụ,
tên của các tham số và sau đó trong colin, các kiểu dữ liệu
mà bạn mong đợi đó tham số để chấp nhận.
>> Vì vậy, trong trường hợp này chúng ta có một chức năng gọi số in lớp.
Nó chấp nhận một biến gọi là bảng điểm, hay đúng hơn một tham số gọi là bảng điểm.
Và chúng tôi đang mong đợi bảng điểm đó là một mảng các số nguyên.
Nếu bảng điểm đó là trống rỗng, chúng tôi sẽ in một điều.
Nếu không chúng ta sẽ in ra số của lớp rằng điều này thực sự có.
>> Bây giờ nếu chúng ta muốn trở lại một số giá trị, sau đó là cách
rằng chúng ta sửa đổi định nghĩa này là để thực sự sử dụng từ khóa mũi tên này,
hoặc sử dụng mũi tên này signifier.
Vì vậy, ở đây chúng ta sẽ xác định một chức năng gọi là trung bình.
Chúng ta sẽ phải chấp nhận một danh sách các số.
Và chúng ta sẽ quay trở lại một đôi, mà sẽ hy vọng
là mức trung bình của mảng này.
Và để làm được điều đó, theo thứ tự để thực sự tính toán trung bình này,
chúng ta sẽ mất một khoản tiền và chúng tôi sẽ về Tất nhiên tổng hợp tất cả các đối tượng
trong mảng này.
>> Chú ý rằng có một mới phong cách cho vòng lặp ở đây.
Chúng tôi không cần phải được rõ ràng về lặp qua tất cả các yếu tố duy nhất,
nhưng chúng ta có thể thay vì nói cho cấp và bảng điểm, ý nghĩa
rằng đối với mỗi đơn mục mà chúng tôi có trong này,
cung cấp các mặt hàng mà trong này biến được gọi là lớp.
Và tôi muốn làm một cái gì đó với nó.
Vì vậy, tôi sẽ tổng hợp tất cả các dữ liệu này và thực sự trở lại sự phân chia đôi.
>> Bây giờ thấy một lần nữa ở đây có các Khái niệm về phân chia số nguyên trong Swift.
Nếu bạn muốn tăng gấp đôi bộ phận bởi vì bạn muốn các số thập phân,
sau đó bạn phải rõ ràng, không chỉ về một bên,
bởi vì nó sẽ không cho phép bạn để ép buộc các dữ liệu ở hai bên này,
bạn phải thực sự học cả hai bên vào đôi
vì vậy mà bạn đang rất rõ ràng về việc bảo đảm
rằng bạn đang làm phân đôi.
>> Hãy di chuyển.
Vì vậy, nếu tôi thực sự muốn accept-- như vậy trong ví dụ này,
này vẫn còn là một câu lệnh dòng dựa trên ứng dụng.
Và chúng ta đang bắt đầu thấy một số những hạn chế của ngôn ngữ trẻ
trong đó mặc dù chúng ta có thể truy cập vào các đối số bằng cách sử dụng
process.arguments này, đó là vẫn không nhất thiết phải sạch
Điều mà chúng tôi từng thấy.
Nhưng về cơ bản tôi khuyến khích bạn để loại nhìn vào mã này
và cố gắng tìm ra chính xác những gì đang xảy ra.
>> Về cơ bản những gì đang xảy ra là chúng ta đang dùng một danh sách các đối số
và bị ép buộc chúng vào số nguyên, và sau đó chúng tôi
sẽ sử dụng như là một cách để in ra trung bình của tất cả các lớp của chúng tôi.
Di chuyển trên.
Bây giờ có một loại data-- nhập dữ liệu khác thay cho các mảng
được gọi là từ điển, mà là rất tương tự như bảng băm hoặc bản đồ băm
và tương tự cũng đến Mảng kết hợp PHP.
Vì vậy, họ có khái niệm các khóa và giá trị.
>> Và chúng được xác định cũng có ký hiệu này khung vuông,
nhưng sự khác biệt là mà từ điển có
bên trong của khung vuông, dấu hai chấm.
Và đại tràng tách dữ liệu gõ đó là chìa khóa và giá trị.
Vì vậy, trong trường hợp này, tôi sẽ tạo ra một từ điển để chấp nhận một số lớp.
Và nó là có được kiểu chuỗi: int,
điều đó có nghĩa rằng tất cả các phím đang có được chuỗi,
và tất cả các giá trị của các phím sẽ là các số nguyên.
>> Điều này có nghĩa là tôi có thể sau đó tham khảo các dữ liệu cụ thể
mà tôi muốn sử dụng những phím thay so với sử dụng các chỉ số số như tôi
sẽ có một mảng tiêu chuẩn.
Bây giờ chúng ta hãy xem, có một điều quan trọng
mà tôi cũng muốn đề cập về trình tự cụ thể mã này.
Và đó là có một loại dữ liệu,
hay đúng hơn là có này ý tưởng của dữ liệu đó là
chứa trong Swift gọi optionals.
>> Và những gì có nghĩa là optionals mà nó thừa nhận thực tế
mà đôi khi bạn sẽ không có được các dữ liệu mà bạn thực sự mong đợi.
Và vì vậy những gì tôi có ý nghĩa bởi đó is-- hãy hãy nhìn vào chuỗi mã này
được lặp qua tất cả các đối số sẽ được thông qua vào mã này
và cố gắng để chuyển đổi chúng, cố gắng chia thành nhiều chuỗi,
vì nó chấp nhận một rất loại hình cụ thể của các đối số.
Và sau đó nó sẽ cố gắng để ép buộc các chuỗi đại diện cho số
thành các số nguyên đó là điểm số, mà tôi sau đó có thể tính toán.
>> Vì vậy, về cơ bản tôi sẽ sử dụng chức năng phân chia này mà
tồn tại trong Thư viện chuẩn Swift.
Tôi sẽ đi vào nó chuỗi mà tôi muốn chia.
Và sau đó trong việc sử dụng này loại cú pháp funky, mà
Tôi không biết nếu chúng tôi sẽ để đến, nhưng có lẽ, chúng ta
sẽ thực sự xác định chính xác nhân vật mà chúng tôi muốn chia tại.
Vì vậy, điều này thực sự trông như thế nào?
Chúng ta hãy nhìn vào thực sự chạy mã này.
>> Vì vậy, ví dụ, chúng ta hãy nói rằng tôi có một bài kiểm tra và tôi đã nhận 50 về điều đó.
Và tôi có một PSETs và Tôi có một trăm trên đó.
Và tôi got-- có khác đố và tôi nhận được 40 trên đó.
Tôi nhấn Enter, và cuối cùng là những gì sẽ xảy ra là nó đang làm gì
đang đến với các thông số, tách các dây ở các dấu hai chấm,
công nhận rằng có hai yếu tố trong mỗi một,
và đó là cơ bản việc theo dõi của mỗi.
>> Vì vậy, tôi có trong từ điển của tôi một bài kiểm tra, mà giá trị được đại diện bởi số 50,
Tôi có một PSET có giá trị 100, và một bài kiểm tra trong đó có một giá trị là 40.
Rồi sau này trong những mã tôi thực trung bình tất cả những giá trị
và liệt kê tất cả các phím của mà điển đặc biệt.
Nhưng điều này là quan trọng để bạn có thể nhận thấy
những gì đang xảy ra, đó là những gì chúng tôi muốn làm là để có chuỗi này
và chia nó ở nhân vật này, mà chúng ta có thể làm một lần nữa với phân chia này
chức năng sử dụng loại này cú pháp thú vị mà tồn tại ở đây.
>> Chỉ cần bây giờ giả định rằng đó là OK.
Chúng tôi sẽ xem xét chi tiết tại đây chỉ trong một thời gian ngắn.
Nhưng bây giờ có một thú vị khía cạnh mà chúng tôi thực sự
muốn thử để chuyển đổi này chuỗi thành một số nguyên.
Nhưng trong ngôn ngữ khác những gì có thể xảy ra là
rằng chúng ta có lẽ sẽ thử để làm điều đó và cả hai trở lại
một số loại trọng điểm giá trị như một tiêu cực
hoặc có thể là vô giá trị hoặc một cái gì đó như thế.
Hoặc có thể nó sẽ chỉ gây ra một lỗi.
Và chúng ta sẽ phải sau đó bắt lỗi
và sau đó cố gắng làm một cái gì đó dựa trên thực tế
việc chuyển đổi này để một số nguyên thất bại.
Đó là nơi mà ý tưởng này của optionals đến.
Bạn thực sự có thể tạo ra một kiểu dữ liệu mà là một dấu hỏi int, cho ví dụ.
Điều đó có nghĩa là số nguyên này là, trên thực tế, tùy chọn.
Và điều gì sẽ xảy ra là nó có thể chứa một số nguyên, hoặc nó có thể không.
Nó có thể, trong thực tế, có khác này ý tưởng, hoàn toàn gọi là nill.
Trong đó có nghĩa rằng có không có giá trị gì trong việc này.
Nó thậm chí không bằng không, có chỉ không có giá trị.
Có hoàn toàn không có giá trị đại diện.
>> Và đó là những gì dòng này 71 đang làm.
Là nó đang nói tôi rằng muốn cố gắng thiết lập một giá trị,
một biến gọi là lớp, tương đương với chuyển đổi của chuỗi này vào trong một int.
Vì vậy, tôi đã lấy chuỗi này, này thành phần đầu tiên,
hay đúng hơn là thứ hai thành phần, bởi vì đây
là không được lập chỉ mục, điều này chuỗi mà tôi đã chia tay.
Và tôi muốn chuyển đổi đó đối với một số nguyên.
Nhưng nó có thể không luôn luôn tiến hành bình thường, vì tưởng tượng
điều gì sẽ xảy ra nếu, chứ không phải là loại một số, tôi gõ tất nhiên như asdf.
>> Nó sẽ thất bại.
Nó không thực sự sẽ được có thể chuyển đổi đó để một số nguyên
như tôi mong đợi.
Vì vậy, thay vì khởi một số loại lỗi,
chúng tôi có ý tưởng này là một tùy chọn.
Và điều đó có nghĩa là sử dụng đánh dấu câu hỏi này tôi có thể nói,
OK, là nó có thể là tôi có thể mất này, biến nó thành một int,
và đặt nó vào một biến, đó cũng sẽ là một int.
Nếu vậy, thì điều đó có nghĩa rằng đây là thành công
và phần đầu tiên này khối có thể tiếp tục.
>> Nếu không, nó đã thất bại.
Không có giá trị trong grade-- hay chứ không có giá trị trong hiện tại,
và tôi thực sự phải cố gắng xử lý tình trạng lỗi này.
Bạn sẽ thấy điều này dấu hỏi tất cả các thời gian
trong Swift và trong ví dụ mã cho Swift.
Và trong thực tế, các nhà điều hành nill, loại này các dấu hỏi, phần optionals,
là có được có lẽ là một trong những điều khó khăn hơn
để loại quấn quanh đầu của bạn như bạn thực sự làm việc với nó.
>> Nó có thể làm cho ý nghĩa bây giờ.
Và trên thực tế, khi tôi còn viết mẫu mã cho điều này,
chắc chắn tôi hiểu những gì đang xảy ra,
nhưng vẫn bắt tôi bởi ngạc nhiên tất cả vì vậy thường xuyên
khi tôi sẽ thấy rằng một số dữ liệu đã thực sự
một phiên bản con số không, một phiên bản tùy chọn của dữ liệu mà tôi đã mong đợi.
Vì vậy, chỉ cần nhận ra rằng nếu bạn có một phiên bản tùy chọn
bạn phải giải nén mà dữ liệu từ hộp này.
>> Vì vậy, nó là loại giống như tưởng tượng nếu bạn I-- có một hộp và nó có chứa một cái gì đó.
Và những gì bạn cần làm là để đặt câu hỏi,
là nó có thể là hộp này thực sự chứa các dữ liệu mà tôi đang tìm kiếm?
Nếu vậy, sau đó kéo ra rằng dữ liệu và đặt nó vào biến này hiện có.
Nếu không, sau đó tôi chỉ cần có để bỏ qua nội dung của box này
hoàn toàn bởi vì nó theo nghĩa đen có chứa gì.
>> Mọi thắc mắc về điều này?
OK, chúng ta hãy di chuyển đi từ này loại điều dựa trên dòng lệnh
và bắt đầu tìm kiếm tại một số công nghệ
Xcode mà cung cấp cho chúng tôi trong các hình thức sân chơi.
Vì vậy, có rất nhiều khả năng ở đây với Swift.
Và nếu bạn mở Xcode và nó hỏi bạn những gì bạn muốn làm,
bạn có thể mở ra các sân chơi và chỉ chơi xung quanh
với rất nhiều cấu trúc khác nhau và các khía cạnh của ngôn ngữ
trước khi bạn bắt đầu chạm vào iOS SDK hoặc Mac SDK.
>> Vì vậy, trường hợp này, chúng ta hãy nói rằng tôi have-- Tôi có một ví dụ tương đối trù
ở đây, nhưng chịu với tôi khi chúng tôi loại các hoạt động thông qua các ví dụ này.
Hãy nói rằng chúng ta phải làm rất nhiều của số mũ với một giá trị cố định,
như chúng ta biết rằng chúng ta sẽ cần đến làm rất nhiều quyền hạn vuông, ví dụ.
Vì vậy, chúng ta sẽ có một số giá trị x, chúng ta sẽ vuông nó,
chúng ta sẽ có một số giá trị y và chúng ta sẽ vuông nó.
Vv và vv.
>> Bây giờ chúng ta có thể thực sự chỉ cần tạo ra một sức mạnh của 2 chức năng này, phải không?
Vì vậy, chúng tôi muốn tạo ra một sức mạnh của 2 chức năng.
Chúng tôi sẽ chấp nhận một đôi.
Chúng tôi sẽ output-- hoặc chúng tôi sẽ trở lại một kiểu double.
Chúng tôi sẽ lấy kết quả này và sau đó cho hai lần
những gì chúng ta thực sự có kết quả, mà được khởi tạo các giá trị của một,
và nhân với x.
Vì vậy, trong bản chất chúng ta có x lần x ở đây.
>> Và như vậy thì tôi có thể sau đó, như chúng ta có thể mong đợi, thực hiện việc này, điện chạy của 2,
cung cấp cho nó một số dữ liệu, tôi thích 2.0.
Và chúng ta có thể nhìn thấy kết quả ở đây 4.0.
Chạy điện của 2 trên 3.2 và chúng tôi có thể nhìn thấy kết quả của chúng tôi, 10,24.
Cho đến nay rất tốt, phải không?
Bây giờ chúng tôi đang nghĩ, tốt, OK.
Bây giờ tôi thực sự cần phải làm rất nhiều quyền hạn của 3.
Vì vậy, tôi sẽ sao chép dán tất cả các mã này, thay đổi tên của hàm từ
sức mạnh của 2 quyền lực của 3, và tất cả mọi thứ sẽ giống nhau, ngoại trừ cho giá trị này
ở đây, phạm vi này, 1 ... 2.
>> Vì vậy, thay vì lặp đi lặp lại loop này hai lần,
Tôi muốn lặp lại vòng lặp này ba lần.
Vì vậy, tôi chỉ cần thay đổi giá trị từ 1 đến 3-- hay đúng hơn 2-3.
Vì vậy, một lần nữa, cùng mã, đó là sự thay đổi duy.
Bây giờ điều này cũng làm việc.
Sức mạnh của 3 cung cấp một số giá trị của 2.
Chúng tôi nhận được 8.
Vì vậy, 2 cubed.
Và 3,2 cubed là 32,768.
Và cho đến nay rất tốt, phải không?
Nhưng hy vọng đây là một chút bit của một lá cờ đỏ cho bạn
trong đó chúng ta có một số sao chép mã
ngoại trừ một số rất nhỏ thay đổi từ một đến tiếp theo.
Vì vậy, có một cách nào đó chúng tôi có thể có thể đơn giản hóa
Vấn đề này, nơi chúng ta có thể thực sự, lúc chạy, tìm ra một số,
cung cấp cho chúng tôi một số chức năng mà có chính xác sức mạnh của chúng ta muốn.
>> Và có ý tưởng này của đóng cửa, mà là thực sự, thực sự
quan trọng trong bối cảnh của Swift, và trong nhiều ngôn ngữ khác.
Nhưng có lẽ bạn sẽ thấy nó được sử dụng nhiều hơn như vậy trong Swift
bởi vì nó được nhúng trong ngôn ngữ
hơn bạn sẽ trong khác còn ngôn ngữ hiện đại.
Vì vậy, ý tưởng về một đóng cửa là thế này, là chúng ta
có thể có một chức năng mà là có nghĩa là để là một chức năng chung, một sức mạnh chung
các chức năng.
>> Và chức năng này sẽ chấp nhận mũ này mà chúng tôi thực sự
muốn tạo.
Vì vậy, ví dụ, đầu tiên Ví dụ, chúng ta muốn có một sức mạnh của 2.
Vì vậy, chúng tôi sẽ cung cấp năng lượng của và sau đó trong ngoặc 2.
Và bây giờ chú ý những gì này thực sự trả về.
Này có một đầu vào của một mồi gọi y là một số nguyên,
và nó trả về này điên tìm kiếm điều trong ngoặc parentheses--
đôi và sau đó mũi tên kép.
>> Điều này có nghĩa là tôi sẽ trả về một chức năng.
Tôi không trở về một loại dữ liệu, tôi
trên thực tế trở về một chức năng có tham số này, mà
chấp nhận một đôi như là đầu vào và kết quả đầu ra một đôi như một giá trị trả về.
Và kết quả là, bởi vì bây giờ tôi đã gọi sức mạnh của, đi qua trong một số giá trị cho y,
và tôi là tạo ra khác này thông báo function-- rằng có
một chức năng đó được tạo ra bên trong của this-- những gì tôi đang làm
Tôi là sau đó có thể thay đổi giá trị đó, một trong đó
giá trị mà tôi đã thay đổi 2-3, bây giờ tôi làm cho nó y.
>> Và điều này vẫn tồn tại.
Vì vậy, mỗi khi tôi gọi điện của, về cơ bản những gì sẽ xảy ra
là tôi có được trả lại một chức năng.
Chú ý rằng ở đây tôi đã xác định một biến mới gọi là hình vuông.
Tôi đã thiết lập nó bằng sức mạnh của, cung cấp giá trị này từ 2 đến sức mạnh của.
Và điều này đã trả lại chức năng là.
Vì vậy, hình vuông, các biến vuông, hiện nay là các loại chức năng
có this-- oops, di chuyển lên một ít bit-- có chữ ký này,
chấp nhận một đôi và đầu ra một đôi.
>> Vì vậy, bây giờ những gì tôi đã thực hiện là tôi đã cơ bản
tạo ra một chức năng gọi là hình vuông chấp nhận bất kỳ giá trị và sẽ vuông nó.
Chúng ta có thể nhìn thấy những gì xảy ra ở đây.
Vuông 3 ví dụ, có nghĩa là tôi sẽ để lấy giá trị 3 phương đó.
Vậy làm thế nào chính xác để làm việc này?
Khi tôi vượt qua sức mạnh của 2-- khi tôi vượt qua 2 vào sức mạnh này của chức năng,
biến này y là dân cư với giá trị 2.
Và đó là loại tổ chức trong bộ nhớ.
Đó là loại thích tổ chức tại nhà nước ở đâu đó trong máy tính,
chúng tôi không thực sự quan tâm như thế nào hoặc nơi vào thời điểm này.
>> Nhưng tôi lại chức năng này gọi exponentiate.
Và một lần nữa, nó không thực sự quan trọng những chức năng này được gọi là,
chúng tôi thực sự có thể gọi nó là bất cứ điều gì, mà chấp nhận một đôi và trả về một đôi,
nhưng sử dụng giá trị này y bên trong của nó.
Vì vậy, mặc dù nó là chức năng này, chức năng exponentiater này đó là
được trả lại cho tôi biến mà tôi gọi là hình vuông,
nó đã chứa đựng bên trong nó khái niệm về những gì y đã.
Và nó nhớ rằng.
>> Vì vậy, mỗi khi tôi gọi là chức năng mà bây giờ gọi là hình vuông, nó sử dụng đó.
Nhưng điều này cũng có nghĩa là tôi có thể tạo ra một biến khác sử dụng
một sức mạnh khác nhau.
Vì vậy, tôi có thể tạo ra một biến khối lập phương, cho Ví dụ, cung cấp cho nó sức mạnh của 3.
Bây giờ cube sẽ thực sự mất một số giá trị và khối lập phương đó và trả lại nó.
Vì vậy, chúng ta có thể thấy rằng tôi nhận được một giá trị 8 trong số đó.
>> Nhưng giá trị y có không thay đổi vì họ
tổ chức vào loại biến độc lập.
Chúng được sắp xếp tổ chức tại không gian độc lập trong bộ nhớ.
Vì vậy, sẽ luôn luôn có khối x với sức mạnh của 3.
Và vuông sẽ luôn luôn có x với sức mạnh của 2,
có nghĩa là hình vuông mà sẽ luôn luôn số vuông, như tôi mong đợi.
Và hình lập phương sẽ luôn luôn cắt nhỏ hinh khôi số, như tôi mong đợi.
Điều này cũng có nghĩa là đôi khi bạn có thể được một số loại sôi nổi cú pháp tìm kiếm
nơi bạn có sức mạnh của ở rất dưới cùng của màn hình ở đây, sức mạnh của 5.
Và bạn vượt qua vào kết quả.
Bạn gọi đó là chức năng mà được trả lại với số lượng 4.
Và vì vậy những gì cơ bản này là 4 với sức mạnh thứ năm,
chúng ta có thể thấy các kết quả đó.
Với tôi cho đến nay?
>> Vì vậy, ý tưởng này được gọi là một đóng cửa, bởi vì những gì chúng tôi đang làm cơ bản
là chúng tôi đang đóng gói một số dữ liệu into-- loại
của kèm theo dữ liệu này vào một chức năng và chúng tôi
có khả năng tái sử dụng chức năng này.
Bây giờ cú pháp này mặc dù có thể thực sự được đơn giản hóa một số tiền lớn.
Và có rất nhiều khả năng trong Swift đơn giản hóa này.
Và đó là những gì sắp xếp của những người tiếp theo thực sự nhìn vào.
Vì vậy, trong 7b ví dụ, chúng tôi mất cùng mã này chính xác.
>> Nhưng bây giờ khá hơn thực sự xác định một chức năng
bên trong của điện này chức năng và cung cấp cho nó một cái tên,
và sau đó quay trở lại tên các chức năng đó, mà
sau đó được sử dụng như là một phần của đóng cửa này, thay vào đó chúng tôi
chỉ cần đi để đơn giản hóa nó.
Chúng ta không cần chức năng này được đặt tên.
Vì vậy, đây là khái niệm của một chức năng vô danh nơi chúng tôi có thể sau đó
chấp nhận như là đầu vào, trong dấu ngoặc ở đây, biến x đó là kiểu double.
>> Chúng tôi sẽ trả về kiểu double.
Và sau đó các từ khóa, n, là đầu của chức năng này.
Vì vậy, nhận thấy rằng tất cả những điều này là trong cặp ngoặc nhọn
và chúng tôi đang xác định một anonymous chức năng ở đây.
Chỉ cần một cách đơn giản xác định chính xác những điều tương tự.
OK?
Nhưng giữ, Swift thực sự cho phép chúng tôi để đi xa hơn và đơn giản hóa hơn nữa,
bởi vì thực sự chúng tôi không quan tâm mà tham số này là
đặt tên bất kỳ điều đặc biệt.
Nó thực sự có thể được gọi là bất cứ điều gì và chúng ta vẫn có thể sử dụng tham số đầu tiên.
>> Vì vậy, trong thực tế có này đặc biệt loại dữ liệu trong các chức năng ẩn danh,
có cái tên đặc biệt này biến trong các chức năng ẩn danh
mà bắt đầu với ký hiệu đô la và đại diện cho
số tham số, số không lập chỉ mục, cho chức năng này.
Vì vậy, có một vài điều đang xảy ra.
Ở đây tôi sẽ trở lại, và sau đó một ngoặc móc đại diện cho một chức năng,
phải không?
>> Chú ý rằng tôi đã không xác định các loại tham số hoặc kiểu trả về.
Nó thực sự có thể được suy ra vì chữ ký
các chức năng ban đầu này.
Vì vậy, chúng ta có thể loại bỏ đó là một khả năng.
Nhưng tôi cũng có thể sử dụng ký hiệu đô la không để đại diện cho tham số đầu tiên này đó là
thông qua vào chức năng ẩn danh này.
Vì vậy, đơn giản hóa nó nhiều hơn.
OK?
Cho đến nay, tốt như vậy?
>> Bây giờ là type-- này làm bạn nhớ đôla này không dấu
mà chúng ta đã thấy trong ngoặc móc này rằng chúng tôi chỉ một thời gian ngắn
trước ở Swift sáu ví dụ này?
Nó ở ngay đây.
Chú ý rằng là chính xác những gì chúng tôi đang tìm kiếm,
là chúng ta đã qua vào chức năng phân chia này
một chức năng vô danh mà kiểm tra các thông số đầu tiên
để xem nó có bằng các biểu tượng thư ruột kết.
Và đó chính xác là những gì xảy ra, đó là tất cả
chúng tôi đang doing-- sự trở lại từ khóa được ngụ ý
trong case-- này, chúng tôi đang trở về giá trị này, nơi chúng ta đang so sánh
các tham số đầu tiên chống lại nhân vật tràng này.
Và vì vậy mà loại này liệu làm rõ.
Và bạn sẽ thấy cấu trúc này rất nhiều trong cú pháp Swift, do đó giữ cho rằng
trong tâm trí khi bạn đang tham gia một cái nhìn lúc này.
Bây giờ chúng ta có thể nhận ra đường ray một chút
và đi thực sự ưa thích mà show thậm chí một số chi tiết của điện Swift.
Bạn thậm chí có thể nhìn thấy một số các mã trong mẫu.
Vì vậy, đó là lý do tại sao tôi sẽ để hiển thị này cho bạn.
>> Về cơ bản những gì chúng ta có thể làm là, đầu tiên của tất cả, nó là loại không cần thiết đối với tôi
để thực hiện tất cả các quyền lực của mã bởi vì nếu bạn nhập Darwin
thư viện, nó thực sự bao gồm một chức năng gọi là pow rằng điều này cho bạn.
Vì vậy, chúng ta có thể đơn giản hóa nó nhiều hơn và có sức mạnh lên chức năng của chúng tôi bây giờ chỉ
là một tuyệt vời lót một nơi mà chúng ta chỉ trả lại chức năng ẩn danh này mà
chấp nhận ký hiệu đô la 0 như mình cơ sở và y là số mũ của nó.
>> Nhưng chúng ta có thể có được thực sự, thực sự ưa thích khi chúng ta
nhận ra rằng Swift có một rất nhiều năng lượng dưới mui xe.
Rất nhiều những nhà khai thác chúng tôi đã được xử lý,
cộng với dấu hiệu và biểu tượng phân chia và tất cả những điều mà bạn thường
hoạt động với các kiểu dữ liệu trong một ngôn ngữ lập trình,
đang thực sự mở rộng trong Swift.
Vì vậy, điều đó có nghĩa rằng trong chúng ta có thể xác định điều hành của chúng ta.
>> Vì vậy, bây giờ tôi đang mệt mỏi của gõ vào tất cả điều này pow và sau đó là một dấu ngoặc đơn và sau đó
cơ sở.
Tôi không muốn làm điều đó.
Tôi thực sự muốn có một điều hành, cho phép tôi làm điều đó.
Vì vậy, tôi có thể nói rằng tôi muốn Swift để tạo ra một nhà điều hành, sao
star-- bằng cách này tôi không thể sử dụng carat vì carat là một nhà điều hành mà
làm điều gì đó khác hoàn toàn.
Vì vậy, tôi không muốn sắp xếp của va chạm với điều đó.
Và vì vậy những gì bạn nhìn thấy trong một loạt của ngôn ngữ, bao gồm cả Python,
là như nhà điều hành sao sao để đại diện cho số mũ.
>> Vì vậy, đó là lý do duy nhất lý do tại sao tôi đã làm điều đó.
Và nó sẽ là một nhà điều hành loại ghi vào.
Và tôi phải cung cấp cho nó một số thông tin
về các ưu tiên về điều này điều hành vì vậy nó kết trái.
Nó giống như tương đối ưu tiên cao so
để tổng kết hay nhân.
Đó là ưu tiên cao hơn tất cả những người.
Vv và vv.
Và sau đó tôi xác định các chức năng mà thực sự
này đưa ra những nhà điều hành này không có gì.
Vì vậy, giả sử rằng tôi có một trái bên và phía bên tay phải,
mà có lẽ sẽ là một tên biến tốt hơn cho việc này.
Phía bên tay trái và bên tay phải.
Sau đó tôi có thể mất quyền năng này của phía bên tay trái để phía bên tay phải
và trả lại giá trị đó.
Vì vậy, bây giờ nó là siêu ngọt.
Tất cả chúng ta phải làm là 2 sao 3 sao và đó là 2 đến sức mạnh thứ ba,
và chúng tôi nhận được một giá trị của 8.
2 sao sao 10 là 2 đến Điện thứ 10, chúng tôi nhận được 1.024.
>> Vì vậy, hiện nay điện của chúng ta về chức năng, mà lại là khác nhau,
vì toàn bộ ý tưởng đằng sau này là chúng tôi có một chức năng mà
luôn luôn có một số giá trị và bội it-- hay đúng hơn
có số mũ với sức mạnh tương tự.
Vì vậy, bây giờ nó thậm chí còn đơn giản hơn.
Vì vậy, bây giờ nó chỉ là đồng đô la ký 0 sao sao y.
Chúng tôi thậm chí không có để sử dụng pow nữa.
>> OK, ai mất?
Chúng ta đang làm OK?
Mọi thắc mắc về công cụ này?
Yeah?
>> Đung Khi you-- [Không nghe thấy] sức mạnh funk của y đôi.
Vì vậy, khi bạn đang trở về một hàm.
DANIEL Armendáriz: Funk sức mạnh của y đôi.
Oh yeah, tôi không biết những con số là y.
Xin lỗi về điều đó.
>> Đung Tại sao các bạn trở về một chức năng [Không nghe thấy] bao vây.
Không phải là đồng đô la không sao sao y [Không nghe thấy]
thấy rằng nhà điều hành với điều đó trở về double [Không nghe thấy] tăng gấp đôi?
>> DANIEL Armendáriz: Vì vậy, hãy tôi trả lời câu hỏi của bạn
làm thế nào tôi hiểu nó và bạn có thể cho tôi biết nếu tôi không hiểu câu hỏi của bạn.
Vì vậy, xây dựng này, nẹp xoăn ký hiệu đô la không sao y sao,
là một hàm.
Và nó chấp nhận một tham số đó là đại diện bởi dấu hiệu này đồng đô la không.
Các từ khóa return được ngụ ý trong này rất ngắn, cú pháp hàm vô danh.
>> Điều đó có nghĩa rằng về cơ bản điều này được nói
là tôi đang xác định một function-- và sau đó tôi sẽ
chỉ cần gọi nó something-- nơi tôi có một số giá trị y.
Tôi có y, mà là gấp đôi.
Và tôi trở lại một đôi.
Và tôi có trong sự trở về y-- xin lỗi, Tôi không nên gọi là y-- x này.
Ôi trời ơi, ôi, ôi.
X-- nope-- sao sao y.
>> Vì vậy, đây chỉ là một là phiên bản đơn giản này.
Và do đó, lý do mà tôi có đô la dấu hiệu không là sử dụng bao vây này
có nghĩa là tôi không còn có gõ pow, hoặc không còn làm
Tôi phải làm một cái gì đó như 3 sao 2 sao.
Tôi chỉ có thể có một đơn chức năng được gọi là hình vuông
mà sẽ luôn luôn mất một số giá trị như là đầu vào
và thực sự trở lại quảng trường đó.
>> Vì vậy, toàn bộ mục đích của việc đóng cửa là để chỉ loại đóng gói thực tế
mà tôi luôn muốn sử dụng bất cứ khi nào y Tôi gọi là chức năng như là sức mạnh
khi chụp mũ này.
Vì vậy, trở lại sau đó, một chức năng chấp nhận
một đôi, đó là cơ sở, và trả lại kết quả của số mũ mà
là chìa khóa ở đây.
Và đó là sự khác biệt lớn.
Không chỉ là một chút của một nảy nở.
>> Điều này không có gì khác biệt so với các ví dụ trước,
nhưng nó chỉ là một chút một phát triển, chúng tôi có thể thực sự
tạo ra một nhà điều hành trong Swift và thực sự làm mọi thứ với nó,
đó là loại một điều thú vị.
Tôi đã trả lời câu hỏi của bạn?
Ngọt ngào.
Bất cứ điều gì khác trước khi chúng tôi di chuyển trên?
OK.
>> Bây giờ loại này đặt ra câu hỏi là that-- cũng OK,
Hiện tại chúng tôi có khả năng cho chức năng để được trả lại.
Chúng ta cũng có thể vượt qua chức năng như là dữ liệu hay như các thông số chức năng khác?
Và trên thực tế, chúng tôi có thể.
Vì vậy, chúng ta hãy nói rằng chúng tôi có tất cả các mã tương tự.
Chúng tôi có các biến vuông rằng sẽ vuông mã này.
Và chúng tôi có các biến cube rằng sẽ cube một số dữ liệu.
Và chúng tôi thực sự muốn áp dụng để một loạt các con số.
>> Vì vậy, những gì chúng ta có thể bị cám dỗ để làm, Tất nhiên, đó chắc chắn là hợp lệ,
là để lặp qua danh sách các số và áp dụng các chức năng của tôi vuông và hình lập phương
và có được hai danh sách mới như kết quả đó là danh sách ban đầu này bình
và cắt nhỏ hinh khôi, tương ứng.
Hoàn toàn chấp nhận.
Nhưng điều gì nữa chúng ta thấy ở đây là chúng ta có,
một lần nữa, sao chép mã của chúng tôi.
Và có lẽ là cơ hội cho chúng tôi để đơn giản hóa này một chút.
Điều gì nếu có một cách để chúng tôi thực sự luôn luôn lặp lại trên một số danh sách
và chỉ cần vượt qua để kỳ diệu này hoạt một biến
đại diện cho một chức năng mà chúng ta muốn áp dụng
để mỗi mục duy nhất trong danh sách này.
Điều này đặt ra khái niệm về những gì được gọi là hàm bậc cao.
Và đó là những gì cơ bản này là, là chúng ta có thể tạo ra một chức năng.
>> Và trong trường hợp này nó được gọi là một mapper, chỉ để cung cấp cho nó một cái tên, chỉ
lập bản đồ trên mỗi mục duy nhất trong một danh sách.
Nơi tôi có một danh sách và tôi có một chức năng.
Và chức năng đó, tất nhiên, có một chữ ký số.
Nó chấp nhận như là một tham số đôi và nó sẽ ra là một đôi.
Và toàn bộ kết quả Chức năng này sẽ
là một danh sách mới đó là kiểu double.
OK?
>> Và những gì tôi sẽ làm là áp dụng chức năng này f
để mọi phần tử trong danh sách của tôi.
Và reply-- và thay mới trở lại này danh sách như là một kết quả, đó là thực sự mát mẻ.
Bây giờ tôi có thể vượt qua chức năng xung quanh.
Và ý tưởng này của bậc cao chức năng là thực sự quan trọng.
Và mapper này thực sự chỉ là thực hiện của người nghèo
của một chức năng được xây dựng thành Swift được gọi là bản đồ.
Và nó chính xác này, thậm chí có thể tốt hơn một chút.
>> Đây chỉ là sắp xếp của một chung, phiên bản đơn giản mà
cho phép chúng ta nhìn thấy các khái niệm áp dụng ở đây.
Bây giờ nhìn vào cách mà tôi thực sự có thể áp dụng vuông của tôi
và chức năng lập phương của tôi vào danh sách này của các con số.
Tôi chạy mapper của tôi.
Tôi cung cấp cho nó danh sách các số điện thoại.
Tôi cung cấp cho nó những sự chức năng đó sẽ
để áp dụng cho mỗi người trong những chỉ số.
Và nó là có được đầu ra như một kết quả.
Và tôi sẽ nhận được để thấy rằng tôi đã bình và cắt nhỏ hinh khôi số của tôi như là một kết quả.
>> Và tất nhiên các mapper sẽ mất bất kỳ loại chức năng ẩn danh.
Chúng tôi thậm chí có thể thấy rằng tôi đã tạo ra một chức năng ẩn danh mới
chỉ mất một số tham số và chia cho 2.
Và chúng ta có thể thấy rằng tôi đã, trên thực tế, chia danh sách của tôi bởi 2 thay thế.
Mát mẻ?
Cho đến nay, tốt như vậy?
Được rồi, bây giờ hãy trở về với ý tưởng này.
Hãy thực hiện điều này trở lại trong bối cảnh của một bảng điểm.
>> Và nếu tôi làm điều đó, chúng ta có thể thấy rằng tôi có thể áp dụng một loạt các options--
hoặc một loạt các chức năng bậc cao
để thực sự đơn giản hóa khả năng của mình để làm một nhiều thứ trên danh sách các số.
Vì vậy, ví dụ, nếu tôi có một danh sách các số,
một trong những chức năng bậc cao mà tồn tại được gọi là giảm.
Những gì làm giảm khá hơn bản đồ, sẽ được giảm
mất hai yếu tố trong danh sách, sẽ có một số chức năng mà
so sánh hai yếu tố của danh sách, và sau đó nó sẽ
loại output-- sự đầu ra của chức năng đó
sẽ là một yếu tố khác mà sau đó so sánh bạn với người khác.
>> Vì vậy, bạn có thể sử dụng điều này để thực sự tổng các số trong danh sách của bạn.
Ví dụ, nếu bạn có một danh sách 1, 2, 3, 4, 5,
bạn có những yếu tố đầu tiên, 1 và 2.
Bạn có thể áp dụng cho một sự bổ sung chức năng đưa hai yếu tố
và phun ra một trong những yếu tố, đó sẽ là giá trị 3.
Sau đó chúng ta lấy giá trị đó với 3 tiếp theo phần tử của danh sách, tổng hợp cả hai,
và sau đó tiếp tục đi xuống trong danh sách.
>> Chúng tôi đang giảm danh sách một giá trị duy nhất.
Và nó chỉ như vậy sẽ xảy ra rằng các dấu cộng
là một nhà điều hành, giống như chúng ta vừa thấy.
Toán tử này là thực sự là một chức năng mà
có chính xác danh sách này mà chúng ta muốn, thay vì các thuộc tính
mà chúng tôi muốn.
Vì vậy, tôi khuyến khích bạn hãy xem này.
Tôi muốn sắp xếp các động thái trên từ một số mã này
để chúng tôi thực sự có thể xem xét một số thực tế, thực tế, Swift thực sự trong Xcode,
trong phát triển iOS.
Nhưng hãy nhìn vào này và xem nếu bạn có thể
phân tích thông qua những gì đang xảy ra với một số các bậc cao
chức năng bao gồm cả bộ lọc, giảm, và bạn sẽ càng
thấy ở đâu đó trong bản đồ ở đây là tốt.
Nó ở ngay đây.
Nơi mà nó sẽ lấy một chuỗi của lớp và nó sẽ thực sự
bản đồ chúng bằng cách sử dụng cấu trúc switch, mà bạn có thể nhận ra từ C,
nhưng thực sự nó là nhiều hơn mạnh mẽ hơn so với các cấu trúc switch
mà chúng tôi có trong C.
>> Và chúng tôi sẽ áp dụng được cho mọi phần tử trong danh sách
và thực sự cung cấp các lớp thư của mỗi
của những lớp sử dụng tất cả các khái niệm mà chúng ta vừa nói về trước.
Bây giờ chúng ta hãy để bên ngoài cho chỉ một phút và nói về cấu trúc.
Và vì vậy cấu trúc là một sự chờ đợi trong C mà chúng tôi đã có thể định nghĩa một kiểu dữ liệu mới.
Cấu trúc tồn tại trong Swift.
Và do đó, làm rất nhiều cấu trúc khác gọi là sự đếm và các lớp học, mà thực sự
lấy ý tưởng này cho một người cấp độ hoàn toàn khác nhau.
>> Và về cơ bản nó chỉ là một cách xác định một kiểu dữ liệu mới.
Vì vậy, nếu bạn get-- nếu bạn đến trên lớp hoặc cấu trúc hoặc đếm,
không bị lẫn lộn bởi nó.
Đó chỉ là cách để xác định một số loại đặc biệt mới của dữ liệu.
Và điều này thực sự quan trọng khi chúng ta đang nói về sự phát triển ứng dụng iOS
bởi vì tất cả mọi thứ mà tồn tại trong ứng dụng iOS
về cơ bản là một đối tượng của một số loại.
Và một đối tượng cơ bản là một lớp hoặc một enum hoặc một cấu trúc.
>> Vì vậy, trong trường hợp này tôi xác định một loại dữ liệu mới
mà tôi đang kêu gọi đánh giá đó là một số tài sản, bao gồm cả
một cái tên và một chuỗi các lớp.
Vì vậy, một loại đánh giá mà tôi có thể có trong tâm trí
sẽ là câu đố, ví dụ.
Tôi muốn có một đánh giá đó là một bài kiểm tra
và rằng có một loạt các lớp kết hợp với đó, cho một bài kiểm tra,
đố hai, vv và vv.
>> Hoặc tôi có thể có một loại khác nhau đánh giá cho bài tập.
Và tôi có thể làm mọi thứ.
Tôi thực sự có thể có chức năng trong loại này
của dữ liệu, mà bây giờ được gọi là phương pháp.
Vì vậy, nếu bạn đã bao giờ nhìn thấy các từ phương pháp, nó thực sự
chỉ là một chức năng mà áp dụng để một lớp học rất cụ thể,
hoặc một loại rất cụ thể của dữ liệu.
Nó cho phép chúng ta sửa đổi các dữ liệu bên trong.
>> Vì vậy, nói cách khác, nếu tôi muốn thêm một lớp để đánh giá của tôi,
sau đó tất cả những gì cần làm là để thêm số điểm là đầu vào
với chức năng này để tài sản nội bộ của tôi.
Có một cấu trúc gọn gàng ở đây trong Swift, đó là dấu chấm này chấm chấm
điều hành, có nghĩa là điểm số có thể bây giờ chấp nhận bất kỳ số lượng các số nguyên.
Và điểm số sẽ là một mảng các số nguyên đó
đã được thông qua với chức năng của tôi, mà có nghĩa là tôi có thể làm những thứ như thế này.
>> Tôi có thể làm thêm lớp và chỉ cung cấp số lượng tùy ý các số nguyên vào nó
và thực sự được cung cấp một mảng của những giá trị trong chức năng của tôi
hoặc trong phương pháp của tôi, như là trường hợp.
Bây giờ điều này là quan trọng bởi vì tất cả mọi thứ trong Xcode, tất cả mọi thứ trong iOS,
trong thực tế, một đối tượng.
Vì vậy, giữ cho rằng trong tâm trí khi chúng ta phá mở Xcode
và bỏ qua quá iOS phiên bản hai và ba
và thực sự đi vào phiên bản bốn.
>> Và một lần nữa, tất cả những điều này sẽ được đăng tải trên trang thảo.
iOS bốn là sắp xếp của một toàn diện thực hiện một ứng dụng rất cơ bản.
Và những gì ứng dụng này có phải nó là tải một giao diện người dùng, mà trông như thế này.
Một lần nữa, nếu chúng ta click vào kịch bản chúng ta có thể thấy rằng đây là những gì nó trông như thế nào.
Đây là giao diện người dùng.
Nó có một tiêu đề ở đầu.
Tôi đã gọi nó là bộ sưu tập web.
>> Ở giữa có một yếu tố được gọi là các điểm ảnh UI.
Và ở phía dưới có một thanh công cụ với một nút duy nhất mà
có không gian co giãn cho phép nó trung tâm ở giữa của thanh công cụ này.
Và những gì xảy ra là khi điều này tải nó tải về một tập tin JSON đó
chứa trên một máy chủ ở nơi khác, phân tích rằng tập tin JSON,
và các tập tin JSON trông một chút như thế này.
Các tập tin JSON trông như thế này.
Có nó là.
>> Nó có một cái tên album và nó có một loạt các hình ảnh.
Mỗi của những bức ảnh có một tên và cũng
một URL tự đại diện cho jpeg phiên bản của bức ảnh cá nhân.
Vì vậy, những gì xảy ra là khi chương trình này tải, nó tải về các tập tin JSON,
phân tích nó, đặt tất cả những điều này vào tương đương với một mảng trong iOS
phát triển ứng dụng, đó là một NSArray.
Và sau đó tôi sau đó có thể tải dữ liệu này vào một ứng dụng
và tải nó trên màn hình của tôi.
>> Có một hình ảnh đó đã được nạp với các nút ở dưới cùng.
Nếu tôi bấm Get Hình ảnh Tiếp theo, sau đó nó kéo hình ảnh từ internet
và thay thế hình ảnh trong giao diện hình ảnh giao diện người dùng.
Vì vậy, bạn có thể tải về này và thực sự hãy xem nó trên máy tính của bạn.
Và xây dựng nó và thực sự biên dịch nó vào thiết bị của bạn.
Nhưng về cơ bản, quá trình này này, tạo ra các storyboard--
hay đúng hơn là không create-- nhưng chọn kịch bản này.
Và thực sự we'll-- nếu bạn không mind-- chúng tôi sẽ chỉ mất một vài giây
để thực sự chỉ cho bạn cách này đã được thực hiện.
>> Chỉ cần như vậy là làm thế nào chúng ta có thể thực sự đạt được điều này là đã tạo thêm một chút
rõ ràng.
Độc thân xem ứng dụng, tôi sẽ gọi hội thảo này
Bốn đại diện này số cụ thể.
Lưu nó vào máy tính để bàn.
OK, sẽ bấm vào các kịch bản.
Và những gì tôi sẽ làm là tìm xem hình ảnh của tôi,
kéo nó vào người dùng của tôi giao diện và trung tâm nó.
Bây giờ chỉ cần đặt nó không may không phải là đi làm một toàn bộ rất nhiều,
ngoại trừ một màn hình đó là kích thước này chính xác.
>> Vì vậy, chúng ta có thể thuyết phục bản thân những cái đó nhấp vào vòng tròn thứ hai này,
đưa xuống pop này lên thực đơn ở đây và thay đổi
để xem trước, nơi mà chúng ta sẽ thực sự có được một cơ hội để xem trước như thế nào
điều này sẽ thực sự xem trên các thiết bị khác.
Như chúng ta có thể thấy, chúng tôi thậm chí không nhìn thấy nó trên trường hợp cụ thể này.
Vì vậy, tôi sẽ đóng cửa này cho bây giờ.
>> Và tôi sẽ chọn biểu tượng này xuống rất
phần dưới cùng của màn hình.
Nó nói giải quyết vấn đề Auto Layout.
Xin lỗi, nó cắt ở phía dưới.
Nhưng nếu tôi bấm vào đó, những gì tôi nhận được là pop này up-- đi.
Những gì tôi có được pop này lên là cho phép tôi thêm khó khăn thiếu.
Và bằng cách đó nó sau đó sẽ loại khóa nó
thành phần trung tâm của màn hình như tôi có thể mong đợi.
>> Bây giờ để có được nút này trên đầu của nó, tôi cần phải đi đến các Editor.
Tới Nhúng Trong và nhấp chuột Navigation Controller.
Những gì sẽ làm là sẽ thêm thành phần này hoàn toàn khác với nó,
nhưng nó sẽ thực sự liên kết nó trở lại giao diện ban đầu của tôi.
Và các chi tiết, một lần nữa, chúng tôi không thực sự cần phải quan tâm ngay bây giờ.
Nhưng tôi muốn có một thanh công cụ ở dưới cùng.
Vì vậy, tôi sẽ kiểm tra cho thấy Toolbar.
>> Và điều này cung cấp trong quan điểm của tôi, mà bây giờ đã ở một nơi khác,
chúng ta có thể nhìn thấy nó được liên kết ở đây.
Nó bây giờ cung cấp một thanh công cụ ở dưới cùng của giao diện người dùng của tôi.
Vì vậy, bây giờ, chứ không phải là một lựa chọn xem hình ảnh, tôi có thể tìm thấy một nhãn,
hay đúng hơn là một toolbar-- chúng ta hãy xem, mà là điều đó không?
Nó được gọi là gì?
Một mục button-- bar-- item-- thanh sorry-- nút item.
Tiếng tom rằng có và áp dụng một vài không gian linh hoạt ở hai bên
để thực sự tập trung đó.
Vì vậy, bây giờ tôi đã tạo ra giao diện của tôi, về cơ bản.
Và tôi có thể cung cấp cho nó một tên gọi theo nhấp đúp vào phần trên
ở đây và nói gallery web và như vậy.
Bây giờ một lần nữa, đây là những yếu tố tồn tại của bản thân.
Và tôi phải kết nối chúng vào mã của tôi mà
Tôi có thể làm bằng cách một lần nữa mang lên biểu tượng này tròn đôi,
thay đổi từ xem trước.
Trong đó, bằng cách này, chúng ta có thể thấy là độc đáo làm trung tâm và sẽ xem xét tốt
trên một loạt các thiết bị.
>> Chuyển sang tự động, mà sẽ đưa lên các mã ViewController.
Và bây giờ phần này là quan trọng.
Để các bạn để kết nối các hai yếu tố, mã của bạn với giao diện người dùng,
bạn chọn mục đó bạn muốn kết nối.
Vì vậy, trong trường hợp này, chúng tôi thực sự muốn mã hóa
thay đổi hình ảnh được chứa xem hình ảnh trong giao diện này.
Vì vậy, nếu bạn kiểm soát kích từ xem hình ảnh và kéo,
bạn sẽ nhận thấy rằng bạn có được một thanh nhỏ, khi bạn buông bỏ tất cả mọi thứ pop này
up sẽ xảy ra.
>> Và nó nói rằng chúng tôi sẽ tạo ra một kết nối.
Và từ đây tôi muốn cung cấp cho nó một cái tên, một cái gì đó giống như bộ sưu tập.
Nhấn Enter.
Và điều này thực sự cung cấp một biến gọi là gallery
mà tôi sau đó có thể tham khảo trong mã của tôi để thay đổi hình ảnh, ví dụ.
Vì vậy, làm thế nào để mã mà thực sự nhìn?
Vâng một lần nữa, tôi không muốn dành quá nhiều thời gian vào nó.
Và tôi khuyến khích bạn tải về nó và có một cái nhìn.
Nhưng một trong những nhất Khía cạnh quan trọng là mã
mà thực sự tìm nạp hình ảnh.
>> Vì vậy, trong trường hợp này tôi muốn để có được trong hình ảnh của tôi
mảng, được chứa trong lớp học của tôi.
Tôi muốn xác định tên và URL đó là được phân tách ra khỏi JSON này.
Trên thực tế yêu cầu các thiết bị để có được URL, để lấy các URL từ này,
và sau đó lấy dữ liệu từ các nội dung của URL đó.
Sau đó, chuyển đổi dữ liệu đó vào một hình ảnh bằng cách chuyển nó thành các hình ảnh giao diện người dùng.
Vì vậy, một lần nữa, đây là những loại bài khác nhau của các đối tượng, các loại khác nhau của các lớp.
>> Và sau đó tôi sau đó có thể thiết lập của tôi gallery.image bằng dữ liệu đó.
Và đó là loại thịt của nó mà thực sự là sau đó
có thể thay đổi các dữ liệu thay đổi from-- các hình ảnh từ một đến tiếp theo.
Vì vậy, một lần nữa, hy vọng doanh nghiệp rất nhiều các cấu trúc
sẽ có ý nghĩa hơn một chút.
Chú ý rằng có một số dấu chấm than ở đây.
Các dấu chấm than là về cơ bản liên quan đến các optionals.
>> Những gì tôi đang nói về cơ bản là mà thậm chí không cần kiểm tra
để xem nếu có dữ liệu trong tùy chọn này,
Tôi sẽ đi trước và giả mà có và Unwrap nó.
Hãy nhớ rằng chúng ta sử dụng sự tương tự của sắp xếp của một gói phần mềm cho các optionals
và chúng ta cần phải unwrap gói và kéo dữ liệu ra.
Các dấu chấm than lực lượng mà thực sự xảy ra.
>> Nhưng tôi biết rằng đây là an toàn vì tôi đã kiểm tra
để xem nếu dữ liệu hình ảnh bằng nil, tôi đã thực sự kiểm tra
để xem có tùy chọn là, trên thực tế, thất bại.
Nếu mà có, trên thực tế, đã thất bại rồi.
Và vì vậy tôi chắc chắn rằng một khi tôi nhận được để điểm tôi có thể an toàn unwrap dữ liệu đó.
Bạn cũng có thể nhìn thấy nó trong các hình thức của một dấu hỏi.
Vì vậy, nếu chúng ta di chuyển xuống đến nơi tôi cần phải thực sự phân tích các dữ liệu.
>> Vì vậy, không được đưa ra bởi các loại tên dài.
Bạn có thể tìm thấy trong Apple phát triển trang web rất nhiều
các tài liệu tham khảo cho tất cả các đối tượng và tất cả các quy trình
mà thực sự làm cho điều này có thể.
Nhưng cần chú ý rằng đây là cơ bản một chức năng mà tôi vượt qua nó một số dữ liệu.
Và tôi nhận lại một số loại dữ liệu.
Và tôi cần phải sử dụng điều này như là từ khóa để chuyển đổi nó thành NSDictionary này?
Đó là một lần nữa, một NSDictionary tùy chọn.
Mà sau đó tôi cần phải kiểm tra để xem nếu nó tồn tại.
>> Vì vậy, tôi có thể sử dụng nếu để equals thành công phân tích,
sau đó tôi biết rằng tùy chọn thực sự có chứa một số dữ liệu.
Hoặc những gì tôi đã làm được ở đây là chỉ là giả định rằng nếu có
không có lỗi mà nó là trong thực tế an toàn.
Được rồi, tôi muốn cảm ơn tất cả các bạn rất nhiều vì đã đến.
Tôi biết điều này là rất nhiều, nhưng đó chỉ là một giờ
để nói về một số công cụ khá tiên tiến.
Và vì vậy hy vọng bạn sẽ có được một cơ hội để tải về tất cả các mã
và mất một tốt hơn, nhiều hơn nhìn toàn diện tại đó.
Phân loại của thuyết phục mình về tất cả những thứ mà đang xảy ra.
Và tôi muốn cảm ơn bạn tất cả, một lần nữa, cho tới.
Và may mắn với các dự án cuối cùng của bạn.
Có một ngày tuyệt vời.