Merge branch 'master' of github.com:adambard/learnxinyminutes-docs

This commit is contained in:
Ian Bertolacci 2015-08-05 18:26:24 -07:00
commit 171f179f6e
2 changed files with 86 additions and 86 deletions

View File

@ -5,6 +5,7 @@ contributors:
- ["George Petrov", "http://github.com/petrovg"]
- ["Dominic Bou-Samra", "http://dbousamra.github.com"]
- ["Geoff Liu", "http://geoffliu.me"]
- ["Ha-Duong Nguyen", "http://reference-error.org"]
filename: learn.scala
---
@ -16,15 +17,16 @@ Scala - the scalable language
Set yourself up:
1) Download Scala - http://www.scala-lang.org/downloads
2) unzip/untar in your favourite location and put the bin subdir on the path
3) Start a scala REPL by typing scala. You should see the prompt:
2) Unzip/untar to your favourite location and put the bin subdir in your `PATH` environment variable
3) Start a Scala REPL by running `scala`. You should see the prompt:
scala>
This is the so called REPL (Read-Eval-Print Loop). You may type any valid
Scala expression into it, and the result will be printed. We will explain what
Scala files look like further into this tutorial, but for now, let's start
with some basics.
This is the so called REPL (Read-Eval-Print Loop). You may type any Scala
expression, and the result will be printed. We will explain what Scala files
look like further into this tutorial, but for now, let's start with some
basics.
*/
@ -32,10 +34,10 @@ Scala - the scalable language
// 1. Basics
/////////////////////////////////////////////////
// Single line comments start with two forward slashes
// Single-line comments start with two forward slashes
/*
Multi line comments, as you can already see from above, look like this.
Multi-line comments, as you can already see from above, look like this.
*/
// Printing, and forcing a new line on the next print
@ -46,7 +48,7 @@ println(10)
print("Hello world")
// Declaring values is done using either var or val.
// val declarations are immutable, whereas var's are mutable. Immutability is
// val declarations are immutable, whereas vars are mutable. Immutability is
// a good thing.
val x = 10 // x is now 10
x = 20 // error: reassignment to val
@ -239,7 +241,7 @@ i // Show the value of i. Note that while is a loop in the classical sense -
// A do while loop
do {
println("x is still less than 10");
println("x is still less than 10")
x += 1
} while (x < 10)
@ -629,13 +631,8 @@ writer.close()
## Further resources
[Scala for the impatient](http://horstmann.com/scala/)
[Twitter Scala school](http://twitter.github.io/scala_school/)
[The scala documentation](http://docs.scala-lang.org/)
[Try Scala in your browser](http://scalatutorials.com/tour/)
Join the [Scala user group](https://groups.google.com/forum/#!forum/scala-user)
* [Scala for the impatient](http://horstmann.com/scala/)
* [Twitter Scala school](http://twitter.github.io/scala_school/)
* [The scala documentation](http://docs.scala-lang.org/)
* [Try Scala in your browser](http://scalatutorials.com/tour/)
* Join the [Scala user group](https://groups.google.com/forum/#!forum/scala-user)

View File

@ -4,6 +4,7 @@ contributors:
- ["Grant Timmerman", "http://github.com/grant"]
- ["Christopher Bess", "http://github.com/cbess"]
- ["Joey Huang", "http://github.com/kamidox"]
- ["Anthony Nguyen", "http://github.com/anthonyn60"]
filename: learnswift.swift
---
@ -26,7 +27,9 @@ import UIKit
// TODO: Do something soon
// FIXME: Fix this code
println("Hello, world")
// In Swift 2, println and print were combined into one print method. Print automatically appends a new line.
print("Hello, world") // println is now print
print("Hello, world", appendNewLine: false) // printing without appending a newline
// variables (var) value can change after being set
// constants (let) value can NOT be changed after being set
@ -46,12 +49,12 @@ let piText = "Pi = \(π), Pi 2 = \(π * 2)" // String interpolation
// Build Specific values
// uses -D build configuration
#if false
println("Not printed")
print("Not printed")
let buildValue = 3
#else
let buildValue = 7
#endif
println("Build value: \(buildValue)") // Build value: 7
print("Build value: \(buildValue)") // Build value: 7
/*
Optionals are a Swift language feature that allows you to store a `Some` or
@ -69,7 +72,7 @@ var someOptionalString2: Optional<String> = "optional"
if someOptionalString != nil {
// I am not nil
if someOptionalString!.hasPrefix("opt") {
println("has the prefix")
print("has the prefix")
}
let empty = someOptionalString?.isEmpty
@ -138,21 +141,21 @@ var emptyMutableDictionary = [String: Float]() // var == mutable
let myArray = [1, 1, 2, 3, 5]
for value in myArray {
if value == 1 {
println("One!")
print("One!")
} else {
println("Not one!")
print("Not one!")
}
}
// for loop (dictionary)
var dict = ["one": 1, "two": 2]
for (key, value) in dict {
println("\(key): \(value)")
print("\(key): \(value)")
}
// for loop (range)
for i in -1...shoppingList.count {
println(i)
print(i)
}
shoppingList[1...2] = ["steak", "peacons"]
// use ..< to exclude the last number
@ -165,7 +168,7 @@ while i < 1000 {
// do-while loop
do {
println("hello")
print("hello")
} while 1 == 2
// Switch
@ -222,8 +225,8 @@ let pricesTuple = getGasPrices()
let price = pricesTuple.2 // 3.79
// Ignore Tuple (or other) values by using _ (underscore)
let (_, price1, _) = pricesTuple // price1 == 3.69
println(price1 == pricesTuple.1) // true
println("Gas price: \(price)")
print(price1 == pricesTuple.1) // true
print("Gas price: \(price)")
// Variadic Args
func setup(numbers: Int...) {
@ -251,7 +254,7 @@ func swapTwoInts(inout a: Int, inout b: Int) {
var someIntA = 7
var someIntB = 3
swapTwoInts(&someIntA, &someIntB)
println(someIntB) // 7
print(someIntB) // 7
//
@ -305,7 +308,7 @@ struct NamesTable {
// Structures have an auto-generated (implicit) designated initializer
let namesTable = NamesTable(names: ["Me", "Them"])
let name = namesTable[1]
println("Name is \(name)") // Name is Them
print("Name is \(name)") // Name is Them
//
// MARK: Classes
@ -386,7 +389,7 @@ let aShape = mySquare as Shape
// compare instances, not the same as == which compares objects (equal to)
if mySquare === mySquare {
println("Yep, it's mySquare")
print("Yep, it's mySquare")
}
// Optional init
@ -409,13 +412,13 @@ class Circle: Shape {
}
var myCircle = Circle(radius: 1)
println(myCircle?.getArea()) // Optional(3)
println(myCircle!.getArea()) // 3
print(myCircle?.getArea()) // Optional(3)
print(myCircle!.getArea()) // 3
var myEmptyCircle = Circle(radius: -1)
println(myEmptyCircle?.getArea()) // "nil"
print(myEmptyCircle?.getArea()) // "nil"
if let circle = myEmptyCircle {
// will not execute since myEmptyCircle is nil
println("circle is not nil")
print("circle is not nil")
}
@ -447,7 +450,7 @@ enum BookName: String {
case John = "John"
case Luke = "Luke"
}
println("Name: \(BookName.John.rawValue)")
print("Name: \(BookName.John.rawValue)")
// Enum with associated Values
enum Furniture {
@ -467,9 +470,9 @@ enum Furniture {
}
var desk: Furniture = .Desk(height: 80)
println(desk.description()) // "Desk with 80 cm"
print(desk.description()) // "Desk with 80 cm"
var chair = Furniture.Chair("Foo", 40)
println(chair.description()) // "Chair of Foo with 40 cm"
print(chair.description()) // "Chair of Foo with 40 cm"
//
@ -522,7 +525,7 @@ extension Square: Printable {
}
}
println("Square: \(mySquare)")
print("Square: \(mySquare)")
// You can also extend built-in types
extension Int {
@ -535,8 +538,8 @@ extension Int {
}
}
println(7.customProperty) // "This is 7"
println(14.multiplyBy(3)) // 42
print(7.customProperty) // "This is 7"
print(14.multiplyBy(3)) // 42
// Generics: Similar to Java and C#. Use the `where` keyword to specify the
// requirements of the generics.
@ -550,7 +553,7 @@ func findIndex<T: Equatable>(array: [T], valueToFind: T) -> Int? {
return nil
}
let foundAtIndex = findIndex([1, 2, 3, 4], 3)
println(foundAtIndex == 2) // true
print(foundAtIndex == 2) // true
// Operators:
// Custom operators can start with the characters:
@ -566,9 +569,9 @@ prefix func !!! (inout shape: Square) -> Square {
}
// current value
println(mySquare.sideLength) // 4
print(mySquare.sideLength) // 4
// change side length using custom !!! operator, increases size by 3
!!!mySquare
println(mySquare.sideLength) // 12
print(mySquare.sideLength) // 12
```