Swiftのクラスのコンダクタ [Swift]
Swiftのクラスのコンダクタは、C++やJavaのようにクラス名と同じ名前のメソッドを定義するのではなく、initという特殊名のメソッドで定義します。
例:
例:
class TestClass { var message = "" init() { message = "Hello" } func simpleDescription() -> String { return message } }
CSS3で背景領域の幅のパーセンテージで背景画像のサイズを設定する [CSS]
CSS3では、背景領域の幅や高さのパーセンテージをbackground-size属性を使って指定できます。
例:
幅80%、高さ90%の場合:
background-size: 幅% 高さ%;
例:
幅80%、高さ90%の場合:
#main { background-image: url(./images/image01.jpg"); background-size: 80% 90%; }
Swiftをシェルから実行するには [Swift]
Swiftをシェルから実行する(REPLで使う)には、swiftの実行ファイルが以下のパスにあるので
以下のようにシェルから実行します。
/Applications/Xcode6-Beta3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/
以下のようにシェルから実行します。
$ /Applications/Xcode6-Beta3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
Welcome to Swift! Type :help for assistance. 1>
HTML5のsection要素とdiv要素 [HTML]
HTML5で導入されたsection要素は、文書の論理的な区切り(section)を表すために使われます。
一方、div要素は文書の論理的な区切りではなく、HTMLファイル上の区切りを表すために使います。
そのため、section要素ブロック内では、見出し要素(h1~h6)が必ず必要となります。
div要素は、単にレイアウト上の区切りとして使うことが多いようです。
論理的な区切りではsectionを使う。
レイアウトのための区切りはdivを使う。
一方、div要素は文書の論理的な区切りではなく、HTMLファイル上の区切りを表すために使います。
そのため、section要素ブロック内では、見出し要素(h1~h6)が必ず必要となります。
div要素は、単にレイアウト上の区切りとして使うことが多いようです。
<section id="chapter1"> <h1>Chapter 1</h1> <p>This section is chapter 1</p> </section> <section id="chapter2"> <h1>Chapter 2</h1> <p>This section chapter 2</p> </section>
論理的な区切りではsectionを使う。
<div id="left-column"> <p>This block position is left column.</p> </div> <div id="right-column"> <div id="navigation"> <ul> <li>Top</li> <li>Recent</li> </ul> </div> </div>
レイアウトのための区切りはdivを使う。
Objective-CのカテゴリはSwiftではextensionを使う [Swift]
Swiftのマニュアルには、Objective-Cのクラスのカテゴリの記述方法が書かれていませんてした。
このカテゴリの機能は、Swiftにはないのかな?と思ったのですか、Swiftではクラスの拡張(extension)を使えば実現できるようです。
例えば、Objective-CでNSObjectクラスにlogメソッドの追加をして、そのカテゴリをLoggingとすると、以下のように記述します。
これをSwiftでは、
と記述することになるようです。
Swiftのextensionでは、Objective-Cのように名前を付けることができないようです。
(上の例では、Logging)
このカテゴリの機能は、Swiftにはないのかな?と思ったのですか、Swiftではクラスの拡張(extension)を使えば実現できるようです。
例えば、Objective-CでNSObjectクラスにlogメソッドの追加をして、そのカテゴリをLoggingとすると、以下のように記述します。
@interface NSObject (Logging) - (void)log; @end @implemetation NSObject (Logging) - (void)log { NSLog(@"%@", self); } @end
これをSwiftでは、
extension NSObject { func log() { println(self) } }
と記述することになるようです。
Swiftのextensionでは、Objective-Cのように名前を付けることができないようです。
(上の例では、Logging)
Swiftのswitch文について [Swift]
Swiftのswitch文はC言語のswitch文を継承しているようですが、case文の条件判定部分がかなり強力になっているようです。
特に、
は、完全に式になっています。
それから、case文の実行部分からswitch外への脱出は、breakを書かなくてもよいようです。
しかし、default文は必ず必要のようです。
逆にC言語のswitchでのbreakを使わずに次のcaseの処理へフォールスルーさせるには、
そのものずばりのfallthroughを記述すると可能となるようです。
let vegetable = "red pepper" switch vegetable { case "celery": let vegetableComment = "Add some raisins and make ants on a log." case "cucumber", "watercress": let vegetableComment = "That would make a good tea sandwich." case let x where x.hasSuffix("pepper"): let vegetableComment = "Is it a spicy \(x)?" default: let vegetableComment = "Everything tastes good in soup." }
特に、
case let x where x.hasSuffix("pepper"):
は、完全に式になっています。
それから、case文の実行部分からswitch外への脱出は、breakを書かなくてもよいようです。
しかし、default文は必ず必要のようです。
逆にC言語のswitchでのbreakを使わずに次のcaseの処理へフォールスルーさせるには、
そのものずばりのfallthroughを記述すると可能となるようです。
Swiftで変数名の頭で使用できる文字 [Swift]
昨日Appleの開発者向けコンファレンスWWDC 2014でObjective-Cに替わる新言語Swiftが発表されました。
言語仕様のドキュメントがAppleから公開されているのでいろいろ読んでいるのですが、変数名に絵文字が使えたりするようです。
U+0100〜U+178F ラテン文字拡張 A
U+1800〜U+024F ラテン文字拡張 B
U+0250〜U+02CF IPA発音記号拡張
U+02D0〜U+02FF 独立修飾文字
U+0370〜U+03FF ギリシア文字・コプト文字
U+0400〜U+04FF キリル文字
U+0500〜U+052F キリル文字増補
U+0530〜U+058F アルメニア文字
U+0590〜U+05FF ヘブライ文字
U+0600〜U+06FF アラビア文字
U+0700〜U+167F
U+1681〜U+180D
U+180F〜U+1DBF
U+1E00〜U+1FFF
U+200B〜U+200D
U+202A〜U+202E
U+203F〜U+2040
U+2054
U+2060〜U+206F
U+2070〜U+20CF
U+2100〜U+218F
U+2460〜U+24FF
U+2776〜U+2793
U+2C00〜U+2DFF
U+2E80〜U+2FFF
U+3004〜U+3007
U+3021〜U+302F
U+3031〜U+303F
U+3040〜U+D7FF
U+F900〜U+FD3D
U+FD40〜U+FDCF
U+FDF0〜U+FE1F
U+FE30〜U+FE44
U+FE47〜U+FFFD
言語仕様のドキュメントがAppleから公開されているのでいろいろ読んでいるのですが、変数名に絵文字が使えたりするようです。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
U+004x | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | |
U+005x | P | Q | R | S | T | U | V | W | X | Y | Z | |||||
U+006x | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | |
U+007x | p | q | r | s | t | u | v | w | x | y | z | |||||
U+00Ax | ¨ | ª | | ¯ | ||||||||||||
U+00Bx | ² | ³ | ´ | µ | · | ¸ | ¹ | º | ¼ | ½ | ¾ | |||||
U+00Cx | À | Á | Â | Ã | Ä | Å | Æ | Ç | È | É | Ê | Ë | Ì | Í | Î | Ï |
U+00Dx | Ð | Ñ | Ò | Ó | Ô | Õ | Ö | Ø | Ù | Ú | Û | Ü | Ý | Þ | ß | |
U+00Ex | à | á | â | ã | ä | å | æ | ç | è | é | ê | ë | ì | í | î | ï |
U+00Fx | ð | ñ | ò | ó | ô | õ | ö | ø | ù | ú | û | ü | ý | þ | ÿ |
U+0100〜U+178F ラテン文字拡張 A
U+1800〜U+024F ラテン文字拡張 B
U+0250〜U+02CF IPA発音記号拡張
U+02D0〜U+02FF 独立修飾文字
U+0370〜U+03FF ギリシア文字・コプト文字
U+0400〜U+04FF キリル文字
U+0500〜U+052F キリル文字増補
U+0530〜U+058F アルメニア文字
U+0590〜U+05FF ヘブライ文字
U+0600〜U+06FF アラビア文字
U+0700〜U+167F
U+1681〜U+180D
U+180F〜U+1DBF
U+1E00〜U+1FFF
U+200B〜U+200D
U+202A〜U+202E
U+203F〜U+2040
U+2054
U+2060〜U+206F
U+2070〜U+20CF
U+2100〜U+218F
U+2460〜U+24FF
U+2776〜U+2793
U+2C00〜U+2DFF
U+2E80〜U+2FFF
U+3004〜U+3007
U+3021〜U+302F
U+3031〜U+303F
U+3040〜U+D7FF
U+F900〜U+FD3D
U+FD40〜U+FDCF
U+FDF0〜U+FE1F
U+FE30〜U+FE44
U+FE47〜U+FFFD
タグ:SWIFT
HTMLコードテキストをブログ用テキストに変換する小さなWebサービス作りました [Webアプリ]
前回の投稿で書いたWebアプリを簡単なWebサービスにしてみました。
WebサービスのURLは、
http://www.yuu.que.jp/tools/html2blogtext/
です。
WebサービスのURLは、
http://www.yuu.que.jp/tools/html2blogtext/
です。
タグ:WEBサービス
HTMLコードテキストをブログ用テキストに変換するWebアプリを作ってみました [Webアプリ]
昨日のSo-netブログでHTMLコードをそのまま書き込めないので、<と>と&を一つ一つ手動で変換していることを書きましたが、とても面倒なので自動で変換するように簡単なWebアプリを作ってみました。
アプリの上部の領域にHTMLコードを入力すると下部の領域に変換したテキストが表示されます。
変換したテキストをコピーすればいいのでとても便利です。
上部の領域でのテキスト入力では、1文字毎に変更する仕様ですのでコードを入力しながら確認して行くことも可能です。
ソースファイルは、index.html、jquery-2.0.0.min.js、script.jsだけです。
index.htmlは以下のようにしてみました。
script.jsは、CoffeeScriptから生成したファイルです。
script.coffeeは以下のようにしました。
この記事は、当然このWebアプリを使ってコードを生成してペーストして投稿しました。
アプリの上部の領域にHTMLコードを入力すると下部の領域に変換したテキストが表示されます。
変換したテキストをコピーすればいいのでとても便利です。
上部の領域でのテキスト入力では、1文字毎に変更する仕様ですのでコードを入力しながら確認して行くことも可能です。
ソースファイルは、index.html、jquery-2.0.0.min.js、script.jsだけです。
index.htmlは以下のようにしてみました。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Convert plain text to HTML safe text</title> <script type="text/javascript" src="./jquery-2.0.0.min.js"></script> <script type="text/javascript" src="./script.js"></script> </head> <body> <div id="inputArea"> <textarea id="input" rows="20" cols="50"></textarea> </div> <div id="outputArea"> <textarea id="output" rows="20" cols="50"></textarea> </div> </body> </html>
script.jsは、CoffeeScriptから生成したファイルです。
script.coffeeは以下のようにしました。
# ## debug debug = (message) -> console.log message ## convertHTMLSafeText convertHTMLSafeText = (text) -> text = text.replace(/&/g, "&") text = text.replace(/</g, "<") text = text.replace(/>/g, ">") $('#output').val(text) ## $ -> $('#input').on 'keyup', -> convertHTMLSafeText $('#input').val()
この記事は、当然このWebアプリを使ってコードを生成してペーストして投稿しました。