Enviar búsqueda
Cargar
Rubyistを誘うScalaの世界 2.0
•
0 recomendaciones
•
2,607 vistas
Yuto Matsukubo
Seguir
in Kawasaki Ruby Kaigi
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 50
Descargar ahora
Descargar para leer sin conexión
Recomendados
Introduction to Scala : Clueda
Introduction to Scala : Clueda
Andreas Neumann
Realm database
Realm database
mean reaksmey
Live coding scala 'the java of the future'
Live coding scala 'the java of the future'
Xebia Nederland BV
From Ruby to Scala
From Ruby to Scala
tod esking
Text processing
Text processing
Icancode
Introduction to JRuby
Introduction to JRuby
Vagmi Mudumbai
Speaking Scala: Refactoring for Fun and Profit (Workshop)
Speaking Scala: Refactoring for Fun and Profit (Workshop)
Tomer Gabel
Children of Ruby
Children of Ruby
Simon St.Laurent
Recomendados
Introduction to Scala : Clueda
Introduction to Scala : Clueda
Andreas Neumann
Realm database
Realm database
mean reaksmey
Live coding scala 'the java of the future'
Live coding scala 'the java of the future'
Xebia Nederland BV
From Ruby to Scala
From Ruby to Scala
tod esking
Text processing
Text processing
Icancode
Introduction to JRuby
Introduction to JRuby
Vagmi Mudumbai
Speaking Scala: Refactoring for Fun and Profit (Workshop)
Speaking Scala: Refactoring for Fun and Profit (Workshop)
Tomer Gabel
Children of Ruby
Children of Ruby
Simon St.Laurent
SWIFT1 Optional
SWIFT1 Optional
Futada Takashi
WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)
Igor Khotin
A Scala Corrections Library
A Scala Corrections Library
Paul Phillips
Scala Refactoring for Fun and Profit
Scala Refactoring for Fun and Profit
Tomer Gabel
SPIN and Shapes
SPIN and Shapes
Holger Knublauch
SWRL2SPIN: Converting SWRL to SPIN
SWRL2SPIN: Converting SWRL to SPIN
Nick Bassiliades
Refrection of kawasaki.rb
Refrection of kawasaki.rb
Aki Ariga
Why did I become a ruby committer
Why did I become a ruby committer
Masaya TARUI
Deploying JRuby Web Applications
Deploying JRuby Web Applications
Joe Kutner
クラウドネイティブが行なういまどきWebサービス開発
クラウドネイティブが行なういまどきWebサービス開発
Yuuji Arakaki
CloudWatch Eventsを使ったECSのAutoScaling
CloudWatch Eventsを使ったECSのAutoScaling
淳 千葉
ECS-CLI in Action
ECS-CLI in Action
Ryo Nakamaru
DB2をAWS上に構築する際のヒント&TIPS
DB2をAWS上に構築する際のヒント&TIPS
Akira Shimosako
Docker で Deep Learning
Docker で Deep Learning
Takenori Nakagawa
Wiki (Printed as manuscript)
Wiki (Printed as manuscript)
Koichi ITO
"fireap" - fast task runner on consul
"fireap" - fast task runner on consul
IKEDA Kiyoshi
grifork - fast propagative task runner -
grifork - fast propagative task runner -
IKEDA Kiyoshi
Introduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alerting
IKEDA Kiyoshi
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
Yuka Aoki
神奈川Ruby会議の会場係だけが知る密かな危機の話
神奈川Ruby会議の会場係だけが知る密かな危機の話
Naoki Nagazumi
Accounting and information systems
Accounting and information systems
MyAssignmenthelp.com
партизанский маркетинг
партизанский маркетинг
Kuskovna
Más contenido relacionado
La actualidad más candente
SWIFT1 Optional
SWIFT1 Optional
Futada Takashi
WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)
Igor Khotin
A Scala Corrections Library
A Scala Corrections Library
Paul Phillips
Scala Refactoring for Fun and Profit
Scala Refactoring for Fun and Profit
Tomer Gabel
SPIN and Shapes
SPIN and Shapes
Holger Knublauch
SWRL2SPIN: Converting SWRL to SPIN
SWRL2SPIN: Converting SWRL to SPIN
Nick Bassiliades
La actualidad más candente
(6)
SWIFT1 Optional
SWIFT1 Optional
WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)
A Scala Corrections Library
A Scala Corrections Library
Scala Refactoring for Fun and Profit
Scala Refactoring for Fun and Profit
SPIN and Shapes
SPIN and Shapes
SWRL2SPIN: Converting SWRL to SPIN
SWRL2SPIN: Converting SWRL to SPIN
Destacado
Refrection of kawasaki.rb
Refrection of kawasaki.rb
Aki Ariga
Why did I become a ruby committer
Why did I become a ruby committer
Masaya TARUI
Deploying JRuby Web Applications
Deploying JRuby Web Applications
Joe Kutner
クラウドネイティブが行なういまどきWebサービス開発
クラウドネイティブが行なういまどきWebサービス開発
Yuuji Arakaki
CloudWatch Eventsを使ったECSのAutoScaling
CloudWatch Eventsを使ったECSのAutoScaling
淳 千葉
ECS-CLI in Action
ECS-CLI in Action
Ryo Nakamaru
DB2をAWS上に構築する際のヒント&TIPS
DB2をAWS上に構築する際のヒント&TIPS
Akira Shimosako
Docker で Deep Learning
Docker で Deep Learning
Takenori Nakagawa
Wiki (Printed as manuscript)
Wiki (Printed as manuscript)
Koichi ITO
"fireap" - fast task runner on consul
"fireap" - fast task runner on consul
IKEDA Kiyoshi
grifork - fast propagative task runner -
grifork - fast propagative task runner -
IKEDA Kiyoshi
Introduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alerting
IKEDA Kiyoshi
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
Yuka Aoki
神奈川Ruby会議の会場係だけが知る密かな危機の話
神奈川Ruby会議の会場係だけが知る密かな危機の話
Naoki Nagazumi
Accounting and information systems
Accounting and information systems
MyAssignmenthelp.com
партизанский маркетинг
партизанский маркетинг
Kuskovna
Gufo2007 02
Gufo2007 02
Gev
Monografia Giudiziale Credit Evolution
Monografia Giudiziale Credit Evolution
bobone
Agreements on Chimney Hill Property
Agreements on Chimney Hill Property
City of College Station
Consititution Day
Consititution Day
dabryan74
Destacado
(20)
Refrection of kawasaki.rb
Refrection of kawasaki.rb
Why did I become a ruby committer
Why did I become a ruby committer
Deploying JRuby Web Applications
Deploying JRuby Web Applications
クラウドネイティブが行なういまどきWebサービス開発
クラウドネイティブが行なういまどきWebサービス開発
CloudWatch Eventsを使ったECSのAutoScaling
CloudWatch Eventsを使ったECSのAutoScaling
ECS-CLI in Action
ECS-CLI in Action
DB2をAWS上に構築する際のヒント&TIPS
DB2をAWS上に構築する際のヒント&TIPS
Docker で Deep Learning
Docker で Deep Learning
Wiki (Printed as manuscript)
Wiki (Printed as manuscript)
"fireap" - fast task runner on consul
"fireap" - fast task runner on consul
grifork - fast propagative task runner -
grifork - fast propagative task runner -
Introduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alerting
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
JAWS-UGコンテナ支部20160205_LT_ハンズラボ青木由佳
神奈川Ruby会議の会場係だけが知る密かな危機の話
神奈川Ruby会議の会場係だけが知る密かな危機の話
Accounting and information systems
Accounting and information systems
партизанский маркетинг
партизанский маркетинг
Gufo2007 02
Gufo2007 02
Monografia Giudiziale Credit Evolution
Monografia Giudiziale Credit Evolution
Agreements on Chimney Hill Property
Agreements on Chimney Hill Property
Consititution Day
Consititution Day
Similar a Rubyistを誘うScalaの世界 2.0
Scala elegant and exotic part 1
Scala elegant and exotic part 1
VulcanMinds
Crystal - Statically Typed Ruby
Crystal - Statically Typed Ruby
Vagmi Mudumbai
TDC 2012 - Patterns e Anti-Patterns em Ruby
TDC 2012 - Patterns e Anti-Patterns em Ruby
Fabio Akita
Scala
Scala
Sven Efftinge
Static or Dynamic Typing? Why not both?
Static or Dynamic Typing? Why not both?
Mario Camou Riveroll
Scala introduction
Scala introduction
vito jeng
Scala active record
Scala active record
鉄平 土佐
Scala uma poderosa linguagem para a jvm
Scala uma poderosa linguagem para a jvm
Isaias Barroso
Scala in Places API
Scala in Places API
Łukasz Bałamut
Scala In The Wild
Scala In The Wild
djspiewak
楽々Scalaプログラミング
楽々Scalaプログラミング
Tomoharu ASAMI
Rails 3.1 Asset Pipeline
Rails 3.1 Asset Pipeline
James Daniels
Модерни езици за програмиране за JVM (2011)
Модерни езици за програмиране за JVM (2011)
Bozhidar Batsov
Scala Days San Francisco
Scala Days San Francisco
Martin Odersky
Intro to scala
Intro to scala
Joe Zulli
Scala Workshop
Scala Workshop
Clueda AG
Taxonomy of Scala
Taxonomy of Scala
shinolajla
[Start] Scala
[Start] Scala
佑介 九岡
Scala
Scala
Andreas Enbohm
Don't panic in Fortaleza - ScalaFX
Don't panic in Fortaleza - ScalaFX
Alain Béarez
Similar a Rubyistを誘うScalaの世界 2.0
(20)
Scala elegant and exotic part 1
Scala elegant and exotic part 1
Crystal - Statically Typed Ruby
Crystal - Statically Typed Ruby
TDC 2012 - Patterns e Anti-Patterns em Ruby
TDC 2012 - Patterns e Anti-Patterns em Ruby
Scala
Scala
Static or Dynamic Typing? Why not both?
Static or Dynamic Typing? Why not both?
Scala introduction
Scala introduction
Scala active record
Scala active record
Scala uma poderosa linguagem para a jvm
Scala uma poderosa linguagem para a jvm
Scala in Places API
Scala in Places API
Scala In The Wild
Scala In The Wild
楽々Scalaプログラミング
楽々Scalaプログラミング
Rails 3.1 Asset Pipeline
Rails 3.1 Asset Pipeline
Модерни езици за програмиране за JVM (2011)
Модерни езици за програмиране за JVM (2011)
Scala Days San Francisco
Scala Days San Francisco
Intro to scala
Intro to scala
Scala Workshop
Scala Workshop
Taxonomy of Scala
Taxonomy of Scala
[Start] Scala
[Start] Scala
Scala
Scala
Don't panic in Fortaleza - ScalaFX
Don't panic in Fortaleza - ScalaFX
Más de Yuto Matsukubo
がんばれテックリード!JIRA芸人篇!!
がんばれテックリード!JIRA芸人篇!!
Yuto Matsukubo
明日から使える気になるGo言語による並行処理
明日から使える気になるGo言語による並行処理
Yuto Matsukubo
Go/gRPCはじめました
Go/gRPCはじめました
Yuto Matsukubo
非エンジニア向け技術セミナーをした話
非エンジニア向け技術セミナーをした話
Yuto Matsukubo
GCPでSplatoonの戦績を分析する
GCPでSplatoonの戦績を分析する
Yuto Matsukubo
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
Yuto Matsukubo
Rubyistを誘うScalaの世界
Rubyistを誘うScalaの世界
Yuto Matsukubo
はじめてのTDD
はじめてのTDD
Yuto Matsukubo
Intoroduction to React.js
Intoroduction to React.js
Yuto Matsukubo
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話
Yuto Matsukubo
Más de Yuto Matsukubo
(10)
がんばれテックリード!JIRA芸人篇!!
がんばれテックリード!JIRA芸人篇!!
明日から使える気になるGo言語による並行処理
明日から使える気になるGo言語による並行処理
Go/gRPCはじめました
Go/gRPCはじめました
非エンジニア向け技術セミナーをした話
非エンジニア向け技術セミナーをした話
GCPでSplatoonの戦績を分析する
GCPでSplatoonの戦績を分析する
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
Rubyistを誘うScalaの世界
Rubyistを誘うScalaの世界
はじめてのTDD
はじめてのTDD
Intoroduction to React.js
Intoroduction to React.js
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話
Último
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
apidays
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
Nanddeep Nachan
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Orbitshub
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
jfdjdjcjdnsjd
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
Overkill Security
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
MadyBayot
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
sudhanshuwaghmare1
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Remote DBA Services
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
danishmna97
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Zilliz
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Jeffrey Haguewood
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DianaGray10
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
The Digital Insurer
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
Rustici Software
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
apidays
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
sammart93
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
The Digital Insurer
Último
(20)
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
Rubyistを誘うScalaの世界 2.0
1.
Rubyist Scala 2.0 in Kawasaki
Ruby Kaigi @Peranikov
2.
• (Matsukubo Yuto) •
@Peranikov • Kawasaki.rb http://kawasakirb.github.io/ • Ruby • )Socket Ruby Scala • We’re hiring!
3.
T
4.
5.
6.
Rubyist Scala Kawasaki.rb Ruby
7.
Scala ?✋
8.
Rubyist Scala
9.
• Ruby Scala •
(Rubyist ) •
10.
Scala
11.
Scala • • JVM (
.NET ) • Java BetterJava
12.
Ruby ?
13.
Ruby ( ) • • •
Mix-In • Open Class • method_missing •
14.
Ruby ( ) • • •
Mix-In • Open Class • method_missing • Scala !
15.
16.
Ruby 1 + 2
# => 3 1.+(2) # => 3
17.
Scala 1 + 2
// => 3 1.+(2) // => 3
18.
Scala class MyClass { //
() def smile: String = { " :-)" } // def smile(str: String): String = { str + " :-)" } // {} def smile2(str: String) = str + " :-)" }
19.
Scala val obj =
new MyClass // () // obj.smile // obj.smile("Hi,") // 1 () obj smile "Hi,"
20.
21.
Ruby • Enumerable#map(collect) • Enumerable#flat_map •
Enumerable#reduce(inject) • Enumerable#select • Enumerable#find • etc…
22.
Scala • Traversable#map • Traversable#flatMap •
Traversable#reduceLeft • Traversable#filter • Traversable#find • etc…
23.
: Ruby map [1,
2, 3, 4].map { |i| i * 2 } # => [2, 4, 6, 8]
24.
Scala List(1, 2, 3,
4).map { i => i * 2 } // => List(2, 4, 6, 8) Ruby !
25.
Scala ( ) List(1,
2, 3, 4).map { _ * 2 } // => List(2, 4, 6, 8)
26.
Q. ? A. Ruby •
Scala map List(1,2,3).map { i => i * 2 } List(1,2,3).map( i => i * 2 ) Scala {}
27.
Ruby lambda # Ruby f
= lambda { |i| i + 10 } f.call(20) # => 30 // Scala val f = (i: Int) => i + 10 f(20) // => 30
28.
:size or length? •
List • size length (size length ) • Ruby List(1,2,3).length // => 3 List(1,2,3).size // => 3
29.
Mix-In
30.
Ruby module Mix-in module
Monster def roar ' ' end end class Godzilla include Monster end Godzilla.new.roar # => " "
31.
Scala Trait trait Monster
{ def roar = " " } class Godzilla extends Monster (new Godzilla).roar // => " "
32.
trait Monster { def
roar = " " } trait HasTail { def swing = " " } class Godzilla extends Monster with HasTail
33.
trait Monster { def
roar: String } class Godzilla extends Monster { def roar = " " } (new Godzilla).roar // => " "
34.
Open Class
35.
Ruby Open Class class
String def replace_to_scala self.gsub('ruby', 'scala') end end "ruby is nice!".replace_to_scala # => "scala is nice!"
36.
Scala Open Class(
) implicit class MyString(val s: String) def replaceToScala = { s.replaceAll("ruby", "scala") } } "ruby is nice!".replaceToScala // String = scala is nice!
37.
implicit class MyString(val
s: String) def replaceToScala = { s.replaceAll("ruby", "scala") } } "ruby is nice!".replaceToScala // String = scala is nice!
38.
implicit conversion • • def concat(i:
String, j: String): String = { i + j } implicit def intToString(src: Int): String = { src.toString } concat(100, 200) // => 100200
39.
method_missing
40.
Ruby method_missing class MyClass def
method_missing(name) "#{name} is missing!!" end end MyClass.new.foo # => "foo is missing!!"
41.
Scala method_missing (Dynamic ) import
scala.language.dynamics class MyClass extends Dynamic { def selectDynamic(name: String): String = { s"${name} is missing!" } } (new MyClass).foo // => foo is missing!
42.
Duck Typing
43.
Ruby Duck Typing •
44.
Scala Duck Typing (Structural
Subtyping) • • • : roar
45.
1. type Roarabel =
{ def roar: String }
46.
2. class KingGhidorah { def
roar: String = " " } class Mothra { def roar: String = " " }
47.
3. def doRoar(target: Roarabel)
= { target.roar } doRoar(new KingGhidorah) // => “ ” doRoar(new Mothra) // => “ ”
48.
Scala • • Future • Scala.js
… JS Scala • Scala Native … Scala LLVM • Dotty … Scala
49.
• Scala • Ruby
Scala • Rubyist Scala !
Descargar ahora