ãŸããã
匷迫芳念ãããªãã®é ã®äžã«ãã£ãããšåº§ã£ãŠããã®ã§ãäœå¹Žãã®éäœåºŠãäœåºŠãæ»ã£ãŠããŸãã å察åŽããåé¡ã«ã¢ãããŒãããããæ°ããç¥èã掻çšããããæåããããçŽããããããªã©ã質åãå®å
šã«è§£æ±ºãããŸã§ç¶ããŸãã ç§ã«ãšã£ãŠãä¿®æ£èšèªã¯ããã°ã©ãã³ã°èšèªã«ãªããŸããã ããããã°ã©ã ãç§ã®ç®ã«ä»ã®ããã°ã©ã ãäœæã§ãããšããäºå®ã¯ãç解ã§ããªããã©ã¯ã¿ã«ã®çŸãããæããŸããã ãã®ãããªããã°ã©ã ãæžãããšèªäœã¯æéã®åé¡ã§ããã
2åç®ã®ã³ãŒã¹ã®åŸã«åããŠæ¥ãŸããã ã³ã³ãã€ã©ãä»®æ³ãã·ã³ãããã³ããã ãã®æšæºã©ã€ãã©ãªå
šäœãäœæããã®ã«ååãªCã®ç¥èããããšç¢ºä¿¡ããŸããã ãã®ã¢ã€ãã¢ã¯ãšã¬ã¬ã³ãã§ãè¥ã
ããããã·ããªãºã ã®ããã³ã¹ãå¹ã蟌ãã§ãããã代ããã«2幎éã®å€åãªä»äºã®çµæã¯æªãããã®ã ã£ãã ä»®æ³ãã·ã³ã¯çåœã®å
åã瀺ãã
æ°žé ã®åå¿ãæžãã®ãå©ããç䌌
ã¢ã»ã³ãã©äžã§ããªãåçŽãªã¹ã¯ãªãããå®è¡ã§ãã
ã«ãããããã ããããžã§ã¯ãã¯ããã«äžæ¢ãããŸããã 代ããã«ã.NETãã©ãããã©ãŒã çšã®èšèªãäœæããŠãç¡æã®ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãjitã³ã³ãã€ã©ãããã³å·šå€§ãªã¯ã©ã¹ã©ã€ãã©ãªã®ãã¹ãŠã®æ©èœãååŸããããšã«ããŸããã ã³ã³ãã€ã©ã¯ããã6ãæã§å®è£
ããããœãŒã¹ã³ãŒãã
CodePlexã«
ã¢ããããŒããããããã§åæ¥èšŒæžãå®ãããšãã§ããŸããã
ãããããŸã äœããæ¬ ããŠããŸããã ãã¹ãŠã®å©ç¹ã®ããã«ãåæ¥èšŒæžçšã«éçºãããèšèªã¯ããã¹ãŠã®åãšé¢æ°ã®æ瀺çãªå®£èšãå¿
èŠãšããäžè¬çãªãµããŒãããªããå¿åé¢æ°ãäœæã§ãããå®éã«ãã®é©çšç¯å²ã¯äžæã§ããã å¥ã®èªè»¢è»ãçºæãããšãã決å®ã¯ã1幎åŸã
Windows Phoneåãã®
ã²ãŒã ã®äœæãçµããŠã次ã«äœããã¹ãããèãå§ãããšãã§ããã 次ã®èŠä»¶ãæ°ããèšèªã«èšå®ãããŸããã
- æ瀺çãªã€ã³ããŒããªãã§å©çšå¯èœãªä»»æã®.NETã¿ã€ããšå¯Ÿè©±ãã
- äžè¬çãªãµããŒã
- å¿åé¢æ°ãšã¯ããŒãžã£ãŒã®ãµããŒã
- å°ãªããšãå®çšçãªäŸ¡å€ã®ååš
åè¿°ã®
æ°žé ã«åå ããããšããé¡æãè¡šæããä»äºã沞隰ãå§ããã 圌ã¯èšèªã®èšèšã®äœæã«ç©æ¥µçã«åå ããFïŒã§ããŒãµãŒãäœæããŸãããæ§æããªãŒãšå
éšã€ã³ãã©ã¹ãã©ã¯ãã£ã®èª¬æãåãäžããŸããã
èšäºã®åŸåã§ãçµæãäœã ã£ãã®ããéäžã§ééããèœãšãç©ŽããããŠèšäºã«ãã®ãããªé»è²ã®èŠåºããä»ããŠããçç±ã«ã€ããŠèª¬æããŸãã
誰ãå¥ã®èªè»¢è»ãå¿
èŠãšããŸããïŒ
ã»ãŒ3幎åãããã«é¢ãããããã¯ã®1ã€ã§ãäžçäžã«
2500ãè¶
ããããã°ã©ãã³ã°èšèªã
ãŸã ããããšãããããŸããã ãªãä»ã®èª°ãã䟿å©ã«ãªãã®ã§ããããïŒ ä»ã®äººã«ã¯ãªããããããªããã®ã¯äœã§ããïŒ
JavaScriptãšLuaã®å§åçãªæåã¯ã.NETãã¹ãã¢ããªã±ãŒã·ã§ã³ãšã®çµ±åã«éç¹ã眮ããŠãèšèªãåã蟌ã¿å¯èœã«ããæ©äŒãšãªããŸããã ãããããããžã§ã¯ãã®åå
-LENS -
Language for Embeddable .NET Scriptingã®ç¥èªãåºãŸããã ãçµ±åããšã¯ãã¹ã¯ãªããã§åãŸãã¯é¢æ°ã宣èšããæ©èœãããã³å®è¡æã«å€éšããã°ã©ã ãšåã蟌ã¿ããã°ã©ã éã§
ãªããžã§ã¯ããçŽæ¥äº€æããããšãæå³ããŸãã ããšãã°ã次ã®ããã«ïŒ
public void Run() { var source = "a = 1 + 2"; var a = 0; var compiler = new LensCompiler(); compiler.RegisterProperty("a", () => a, newA => a = newA); try { var fx = compiler.Compile(source); fx(); Console.WriteLine("Success: {0}", a); } catch (LensCompilerException ex) { Console.WriteLine("Error: {0}", ex.FullMessage); } }
ãã®äŸãããããããã«ãLENSãµããŒãã®æ¥ç¶ã¯éåžžã«ç°¡åã§ããã¢ã»ã³ããªããããžã§ã¯ãã®Referenceã«è¿œå ããã€ã³ã¹ã¿ã³ã¹ãäœæããŠãœãŒã¹ã³ãŒãããã£ãŒãããã ãã§ãã ãã¹ãŠã®ãéæ³ãã¯
RegisterProperty
ã¡ãœããã«ãããŸã-ãã®å©ãã«ããããã¹ãããã°ã©ã ããã®ä»»æã®å€ãèªã¿åããšæžã蟌ã¿ã®äž¡æ¹ã§ã¹ã¯ãªããã§å©çšå¯èœã«ãªããŸãã åãšé¢æ°ã«ã¯ããããã
RegisterType
ãš
RegisterFunction
ã¡ãœããããããŸãã
èšèªæ©èœ
æ§æã«é¢ããŠã¯ãLENSèšèªã¯Pythonããã³FïŒèšèªããå€ãã®ããšãåŠã³ãŸããã Cã©ã€ã¯ãªèšèªã§ã®10幎éã®äœæ¥ã§ãã»ãã³ãã³ãšäžæ¬åŒ§ãçããããåŒã¯æ¹è¡ã§çµããããããã¯ã¯ã€ã³ãã³ããããŸãã
åºæ¬ã¿ã€ã
åºæ¬çãªåã¯ã
bool
ã
int
ã
double
ã
string
ã§ãã ãããã®ã¿ã€ãã®å®æ°ã¯ãCïŒãšåãæ¹æ³ã§èšè¿°ãããŸãã
å€æ°å®£èš
å€æ°ã¯ã
var
ããã³
let
ããŒã¯ãŒãã䜿çšããŠå®£èšãããŸãã æåã¯å¯å€å€æ°ã宣èšãã2çªç®ã¯èªã¿åãå°çšå€æ°ã宣èšããŸãã
let a = 42 var b = "hello world"
å¶åŸ¡æ§é
æ¡ä»¶ã¯
if
ãããã¯ã䜿çš
while
ãŠæžã蟌ãŸããã«ãŒãã¯
while
ã䜿çš
while
ãŠæžã蟌ãŸããŸãã
var a = 1 while(a < 10) if(a % 2 == 0) print "{0} is even" a else print "oops, {0} is odd" a a = a + 1
å¶åŸ¡æ§é
ã¯å€ãè¿ããŸã ã ããã¯ãå²ãåœãŠèšå·ã®å³åŽã§ã䜿çšã§ãã
if
ïŒ
let description = if(age < 21) "child" else "grown-up"
æ©èœ
äžèšã®äŸãããããããã«ã
print
é¢æ°ã¯é¢æ°ã¹ã¿ã€ã«ã§åŒã³åºãããŸããæåã«ãé¢æ°ãŸãã¯ããªã²ãŒããªããžã§ã¯ãã®ååã次ã«ã¹ããŒã¹ã§åºåãããåŒæ°ãç¶ããŸãã åŒæ°ãšããŠãªãã©ã«ãŸãã¯å€æ°åãããè€éãªåŒãæž¡ãå¿
èŠãããå Žåã¯ãæ¬åŒ§ã§å²ãŸããŸãã
print "test" print abc print "result is: " (1 + 2)
ãã©ã¡ãŒã¿ãªãã§é¢æ°ãåŒã³åºãã«ã¯ã空ã®æ¬åŒ§ã®ãã¢ã䜿çšãããŸãã å®éã®ãšãããé¢æ°åãã©ãã€ã ã«ã¯ããã©ã¡ãŒã¿ãŒã®ãªãé¢æ°ããªã©ã¯ãããŸããã Tru-functionariesã¯ã
çŽé¢æ°ã®ã¿ã§åäœããããšã奜ã¿ãåŒæ°ã®ãªãçŽé¢æ°ã¯æ¬è³ªçã«å®æ°ã§ãã ãã®å Žåã®ç©ºã®æ¬åŒ§ã®ãã¢ã¯ã
unit
åã®ãªãã©ã«ïŒ
void
å矩èªïŒã§ãã
ãåŒæ°ã
ãªãããšã瀺ããŸãã åæ§ã«ããã©ã¡ãŒã¿ãŒã®ãªãã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºãããŸãã
é¢æ°å®£èšã¯ããŒã¯ãŒã
fun
å§ãŸã
fun
ïŒ
fun launch of bool max:int name:string -> var x = 0 while(x < max) println "{0}..." x x = x - 1 print "Rocket {0} name is launching!" name let rocket = new Rocket () rocket.Success countdown 10
LENSã«ã¯
return
ããŒã¯ãŒãã¯ãããŸããã é¢æ°ã®æ»ãå€ã¯æåŸã®åŒã§ãã é¢æ°ãäœãè¿ãã¹ãã§ã¯ãªãããæåŸã®åŒãäœããã®ã¿ã€ãã§ããå Žåã䜿ãæ
£ãããªãã©ã«
()
ãŸãã ããŒã¯ãŒã
break
ããã³
continue
ãæäŸãããŠããŸããã
çŸåšäœæ¥äžã®ããŒãžã§ã³ã§ã¯ãé¢æ°ãèªåçã«
ã¡ã¢å¯èœã«ããããšãã§ããŸãã ãããè¡ãã«ã¯ãé¢æ°ã®èª¬æã®åã«
pure
ããŒã¯ãŒãã䜿çšããŸãã èšæ¶ã«æ®ãé¢æ°ã¯ããã®å€ãèŸæžã«ãã£ãã·ã¥ããŸãããã®ãããªãã©ã¡ãŒã¿ãŒã®ã»ããã§é¢æ°ãæ¢ã«1ååŒã³åºãããŠããå Žåããã®å€ã¯ãã®èŸæžããååŸãããåèšç®ãããŸããã
pure fun add of int x:int y:int -> print "calculating..." x + y add 1 2
ã«ã¹ã¿ã æ§é ãšä»£æ°å
record
ããŒã¯ãŒãã䜿çšããŠãæ§é ãšãã®ãã£ãŒã«ãã®ãªã¹ãã説æã§ããŸãã
record Point X : int Y : int let zero = new Point () let one = new Point 1 1
代æ°åã¯ã
type
ããŒã¯ãŒããšããã®åãåãå
¥ããããšãã§ãããªãã·ã§ã³ã®ãªã¹ãã«ãã£ãŠå®£èšãããŸãã ããªã¢ã³ãã«ã¯ãä»»æã®ã¿ã€ãã®ã©ãã«ãä»ããããšãã§ããŸãã
type Card Ace King Queen Jack ValueCard of int let king = King let ten = ValueCard 10 print (ten is Card)
æ§é ã®å Žåããã¹ãŠã®ãã£ãŒã«ããäžåºŠã«åæåããããã©ã«ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒãšã³ã³ã¹ãã©ã¯ã¿ãŒãäœæãããŸãã ãŸããçµã¿èŸŒã¿åã®å Žåã
Equals
ããã³
GetHashCode
ã¡ãœãããèªåçã«äœæããããããããããèŸæžã®ããŒãšããŠäœ¿çšã§ããŸãã
ã³ã³ãã
é »ç¹ã«äœ¿çšãããã³ã³ãããåæåããããã«ãç¹å¥ãª
new
æ§æã䜿çšãããŸãïŒ
let array = new [1; 2; 3; 4; 5] let list = new [[ "hello"; "world" ]] let tuple = new (13; 42.0; true; "test") let dict = new { "a" => 1; "b" => 2 }
ã³ã³ããã®å Žåãæé©ãªãžã§ããªãã¯ã¿ã€ããèªåçã«è¡šç€ºãããŸãã äŸïŒ
let a = new [1; 2; 3.3]
æ¡åŒµã¡ãœãã
察å¿ãããã©ã°ãèšå®ã§ç¡å¹ã«ãªã£ãŠããªãå Žåãã³ã³ãã€ã©ã¯é©åãªæ¡åŒµã¡ãœãããæ¢ããŸãã
let a = Enumerable::Range 1 10 let sum = a.Product ()
LINQã¯ãå°ãå·§åŠãªæ§æã䜿çšããŠãµããŒããããŠããŸãã
let oddSquareSum = Enumerable::Range 1 100 |> Where ((x:int) -> x % 2 == 0) |> Select ((x:int) -> x ** 2) |> Sum ()
ããã«
ã³ã³ãã€ã©ã¯ãããã«å€ãã®èå³æ·±ããã®ãå®è£
ããŠããŸãã
- å®æ°åŒã¯ã³ã³ãã€ã«æã«è©äŸ¡ãããŸã
- ãµããŒãããããªãŒããŒã©ã€ããããæŒç®å
- try \ catchã®åœ¢åŒã§ã®å€å
žçãªäŸå€åŠçããµããŒããããŠããŸã
- çæãããã¢ã»ã³ããªã¯ãäœãã€ã³ããŒããããŠããªãå Žåã.exeã«ä¿åã§ããŸãã
- ã³ãŒãã§èª¬æãããŠããé¢æ°ã¯ãæ¡åŒµã¡ãœãããšããŠäœ¿çšã§ããŸã
ã§ã¯ããªãããŒã¯ã©ãã§ããïŒ
ãããŸã§ã®èšäºãèªãã 人ã®å€ãã¯ã確å®ã«æåŸ
ã倱ã£ãŠããŸã-çŽæããããã©ãã¯ã©ãã§ããïŒ ç§ã¯èŠããŠããŸãããèŠããŠããŸãããæåã¯äœè«ã§ãã
ã³ã³ãã€ã©ã®ããã¯ãšã³ãã¯ããã°ããã.NET Frameworkã®äžéšã§ãã
Reflection.Emitã©ã€ãã©ãªã§ãã åãã¡ãœããããã£ãŒã«ããããã³ãã®ä»ã®ãšã³ãã£ãã£ããã®å Žã§äœæã§ã
ãŸã ãã¡ãœããã³ãŒãã¯
MSILã³ãã³ãã䜿çšããŠèšè¿°ãã
ãŸã ã ãã ãããã®å¹
åºãæ©èœã«å ããŠãããªãã®åä»ãªèœãšãç©ŽããããŸãã
ç§ãæåã«ééããåé¡ã¯ãçæãããåãæ€æ»ã§ããªãããšã§ãã
var intMethods = typeof(int).GetMethods();
stackoverflowã§ã圌ãã¯ãäœæãããã¡ãœããã®ãªã¹ããä¿åããããšãšãããããæ€çŽ¢ããããšããã³ã§è¡ãå¿
èŠãããããšã
æ確ã«èª¬æããŠãããŸããã é¢åã§ãããé£ããã¯ãããŸããã
ããããããã«-ãã£ãšã
äœæãããåã ãã§ãªããäœæ
ãããåããã©ã¡ãŒã¿ãŒãšããŠäœ¿çšããçµã¿èŸŒã¿ã®ãžã§ããªãã¯åãæ€æ»ã§ããªãããšãå€æããŸããïŒ ä»¥äžã«ãReflection.Emitã§äœæããããšãããšåé¡ãçºçããã¯ã©ã¹ã®äŸã瀺ããŸãã
class A { public List<A> Values = new List<A>(); }
æªåŸªç°ãå€æããŠããŸãã
List<A>
åã®ã³ã³ã¹ãã©ã¯ã¿ãŒãååŸã§ããã®ã¯ãã¢ã»ã³ããªãæ¢ã«ãã¡ã€ãã©ã€ãºãããŠãããäžèŠã«ãªã£ããšãã ãã§ãã
Stackoverflowã«é¢ããç§ã®
次ã®è³ªåã«ã¯ãJohn SkeetïŒ
CïŒin Depthã®èè
ïŒãšEric LippertïŒæè¿ã¯CïŒ
éçºè
ãçãããŸã§ïŒ
ãåçããŸããã ãšãªãã¯ã®è©æ±ºã¯å€±æããåãæ¶ããŸããã§ããã
Reflection.Emitã¯åŒ±ãããŠãå®éã®ã³ã³ãã€ã©ã®æ§ç¯ã«ã¯äœ¿çšã§ããŸãã ã åçãªåŒã³åºããµã€ããLINQã¯ãšãªã§ã®åŒããªãŒã®çºè¡ãªã©ãå°ããªããã¡ãã®ã³ã³ãã€ã«ã¿ã¹ã¯ã«ã¯æé©ã§ãããã³ã³ãã€ã©ã§çŽé¢ããããŸããŸãªåé¡ã«ã¯ããã«ãã®èœåãè¶
ããŠããŸããŸãã
Reflection.Emitã¯åŒ±ãããŠãå®éã®ã³ã³ãã€ã©ãæ§ç¯ã§ããŸããã LINQã¯ãšãªã§ã®åçåŒã³åºããåŒããªãŒã®äœæãªã©ããããã¡ããã®ã³ã³ãã€ã«ã¿ã¹ã¯ã«é©ããŠããŸãããå®éã®ã³ã³ãã€ã©ã®åé¡ã解決ããã«ã¯ããã®æ©èœãããã«ååã§ã¯ãªããªããŸãã
Ericã«ãããšã
Common Compiler Infrastructureã䜿çšããŠã³ã³ãã€ã©ãæžãæããã®ãæãæ£ãããšæãããŸããããã®ãªãã·ã§ã³ã«ã€ããŠã¯èæ
®ããŸããã§ããã é ã«æµ®ããã æåã®æ±ºå®ã¯ãèšèªããç§ãã¡èªèº«ã®åã宣èšããå¯èœæ§ãæé€ããããšã§ããããããã¯ã¹ããŒããã³ããããªãã§ãããã æ¬èœã¯ããã®å¶éãåé¿ããããã®äœããã®èªæãªæ¹æ³ããªããã°ãªããªããšç€ºåããŸããã
ãããŠããã®ãããªæ¹æ³ã¯æ¬åœã«ãããŸããïŒ ããã¯ç§ãäºæ³ãããããã¯ããã«æçœã§ããããšãå€æããŸããã
åãstackoverflowã§ããã³ããã衚瀺ãã
ãããã«
ã TypeBuilder
ã¯ã©ã¹ã«ã¯éçã¡ãœãããããã次ã®ããã«ã¡ãœããããã£ãŒã«ãããŸãã¯ããããã£ãååŸã§ããŸãã
var myType = createType("MyType"); var listType = typeof(List<>); var myList = listType.MakeGenericType(myType); var genericMethod = listType.GetMethod("Add"); var actualMethod = TypeBuilder.GetMethod(myList, genericMethod);
ãã ããããã«ã¯é倧ãªæ¬ ç¹ããããŸããåŒæ°ã®åã¯è¿ãããã¡ãœããã§çœ®æãããŸããã çµæã¯
List<MyType>.Add(T item)
ã¡ãœããã®ãã³ãã«ã«ãªããŸããåŒæ°ã®åã¯ãäºæ³ããã
MyType
ã§ã¯ãªããæ£ç¢ºã«
T
ïŒæ±çšãã©ã¡ãŒã¿ãŒïŒã«
MyType
ãŸãã
ãã®æ¬ ç¹ã解æ¶ããã«ã¯ãå
å«åãšåºæ¬ã¡ãœããã®èšè¿°ããåŒæ°åã®å€ãèšç®ããé©åãªå Žæã§ãããã眮ãæããã¢ã«ãŽãªãºã ã®å®è£
ãå¿
èŠã§ããã
TypeBuilder
ã¡ãœãããšäžç·ã«
TypeBuilder
ãããã®2ã€ã®ã¡ã«ããºã ã¯æªåŸªç°ãåé¿ããŸããã
çµè«-ãã°ããããã®ã§ããééã£ãŠããå Žåããã
ãŸãããReflection.Emitã§ã¯å®å
šã«æ©èœããã³ã³ãã€ã©ãäœæ
ã§ããŸã ã 確ãã«ãããªãã¯ã¹ããŒã ãã¹ãåãå¿
èŠããããŸãã
Reflection.Emit
ã®å¶éã«ã€ããŠè©³ããç¥ããã人ã¯ã2009幎ã®
MSDNããã°èšäºãèªãããšããå§ãããŸãã çæã§ããªãã¯ã©ã¹ããããžã®äŸãããã€ããããŸãã 泚æãVBã®äŸïŒ
ã¡ã¢åã®é©ç°
ã¡ã¢åã®ããã®èšèªãµããŒãã«å²ã蟌ãã§ãç§ã¯ãã®ãã©ã¯ãã£ã¹ãã³ã³ãã€ã©ãŒèªäœã®é床ãæ¹åããããšãã§ãããã©ããçªç¶æããŸããã ã³ã³ãã€ã©ã§æãäžè¬çã«äœ¿çšããããã®ã®1ã€ã¯ã
TypeDistance
é¢æ°ã§ãã 2ã€ã®ã¿ã€ãéã®çžå¯Ÿçãªç¶æ¿ãŸãã¯å€æè·é¢ãèšç®ããŸããããã¯æ¬¡ã®å Žåã«å¿
èŠã§ãã
- åŒãåã«ãã£ã¹ãã§ãããã©ããã確èªãã
- æé©ãªãªãŒããŒããŒãã¡ãœãããæ€çŽ¢ãã
- ã³ã¬ã¯ã·ã§ã³ã«æãé©ããäžè¬çãªã¿ã€ãã®å®çŸ©
ãã®æ¹æ³ã«ã¯12çš®é¡ä»¥äžã®ããããçš®é¡ã®ãã§ãã¯ãå«ãŸããŠãããã³ã³ãã€ã«æéã®ããªãã®éšåãå ããŠããŸããã ãã ãã2ã€ã®ã¿ã€ãéã®è·é¢ã¯æéãšãšãã«å€åããªãããã
Dictionary<Tuple<Type, Type>, int>
ãã£ã¯ã·ã§ããªã«ãã£ãã·ã¥ããããšã¯éåžžã«å¯èœã§ãã 3ã€ã®äž»èŠãªã¡ãœãããã¡ã¢ããã®ã«çŽ30åããããããã€ãã®è€éãªã¹ã¯ãªããã®ã³ã³ãã€ã«æéã
çŽ60åççž®ããŸãã ã
ä»åŸã®ãããžã§ã¯ã
çŸåšãã³ã³ãã€ã©ã¯å®å®ããŠåäœããŠããã200以äžã®ãã¹ãã«åæ ŒããŠããŸãã å®éã®ãããžã§ã¯ãã§ãã§ã«äœ¿çšã§ããŸãããããã¯äœæ¥ãå®äºããããšãæå³ãããã®ã§ã¯ãããŸããã äž»ãªã¿ã¹ã¯ã¯ãããŒãµãŒãFïŒããCïŒã«æžãæããããšã§ãã
FParsecã©ã€ãã©ãªã䜿çšããŠããŒãµãŒãæ§ç¯ããããšèªäœã¯æ£åœåããããææ³ã®å€æŽããµããŒãããããšã¯èããããªããªããŸããã ããã«ããã¹ãŠã®FïŒã©ã³ã¿ã€ã ãš500ãããã€ãã®äŸåé¢ä¿ã«æ²¿ã£ãŠããšã©ãŒã¡ãã»ãŒãžãšãã©ãã°ã衚瀺ããããã®ããªã貧匱ãªæ©èœãæäŸããŸãã ãã¹ãŠã®ã³ã³ãã€ã©ã³ãŒãã250 kbãèŠããããšãèãããšãããã¯éåžžã«å€ããªããŸãã
ãã®ãããäžéšã®æ©èœã¯ã³ã³ãã€ã©ã«æ¢ã«å®è£
ãããŠããŸãããããŒãµãŒã§ã¯ãŸã ãµããŒããããŠããŸãã-ææ³ã®ããããªå€æŽã«ãããéªåŽ©ã®ãããªãã¹ã倱æã®æ³¢ãçºçããŸãã ãããã®ãããªãã¯ãã«ã¯ã
for/foreach
ãäŸå€åŠçãšé¢æ°ã®ã¡ã¢åäžã®
finally
ã»ã¯ã·ã§ã³ãããã³ããããªæ§æã®æ¹è¯ããããŸãã
ãã以å€ã®å Žåãäœæ¥ã®åé¢ã¯ã»ãŒæ¬¡ã®ãšããã§ãã
- ãã¿ãŒã³ãããã³ã°ãµããŒããè¿œå ãã
- ãªããžã§ã¯ãåæååã®ãµããŒããè¿œå
- ãžã§ããªãã¯ã¡ãœãããšå Žåã«ãã£ãŠã¯æ§é äœã®å®£èšãèš±å¯ãã
- ã€ãã³ããµãã¹ã¯ãªãã·ã§ã³ãµããŒããè¿œå ãã
- ããã¥ã¡ã³ãã®ãã¹ãŠã®æ©èœã説æãã
ç§ãã¡ã¯äžç·ã«ãããžã§ã¯ãã«åãçµãã§ããŸãããããããèªè
ã®äžã«å¿ãåããããèªè
ãããã§ããã-ããããã°ãä»äºã¯éããªããŸãã ããé ãèšç»ã«ã¯ãVisual Studioã§ã®èšèªãµããŒããšãããã°ã·ã³ãã«ã®çæãå«ãŸããŸãã
ã©ãã§è©Šãããšãã§ããŸããïŒ
ãã¹ãŠã®ãœãŒã¹ã³ãŒãã¯ãgithubãªããžããªã§å
¥æã§ããŸãã
github.com/impworks/lensãããžã§ã¯ãã«ã¯ãã³ã³ãã€ã©ããã¹ãã§ãããã¹ããã¹ãããã°ã©ã ã3ã€ãããŸãã 圌ãã®ä»äºã«ã¯
FïŒRedistributableãå¿
èŠã§ãã Visual Studio 2010以åãã€ã³ã¹ããŒã«ããŠããå Žåã¯ãäœãã€ã³ã¹ããŒã«ããå¿
èŠã¯ãããŸããã
Windowsçšã®åéããããã¢ã³ã³ãœãŒã«
ã³ã³ãã€ã©ãŒã®æãç°¡åãªãã¹ãã ããã°ã©ã ã¯1è¡ãã€å
¥åããããããã¡ã€ã«ããããŒããããŸãã éå§ããã«ã¯ãè¡ã®æ«å°Ÿã«
#
æåãå
¥åããŸãã

ãããã¿ãŒ
y = f(x)
圢åŒã®åŒã§2次å
é¢æ°ãããããã§ããŸãã ç¯å²ãšã¹ããããèšå®ã§ããŸãã
ïŒåçã¯ã¯ãªãã¯å¯èœã§ãïŒã°ã©ãã£ãã¯ãµã³ãããã¯ã¹
æãæ©èœçãªãã¹ãã¢ããªã±ãŒã·ã§ã³ã ã¹ã¯ãªããã«ã¯ãCircleåãšRectåãçšæãããŠãããç»é¢ã«è¡šç€ºããŠããããã®åäœã®ããžãã¯ã説æã§ããŸãã ããã€ãã®ãã¢ã¹ã¯ãªãããå«ãŸããŠããŸãã

åèš
ããã§ãããããžã§ã¯ãã¯å®éçãªåé¡ã解決ããããšããã嚯楜ã®ããã«è¡ãããŸããã ãã¡ãããããã¯èª°ã«ãšã£ãŠã圹ã«ç«ããªããããããŸããããããã«åãçµãããšã§çŽ8ãæéã®èå³æ·±ãåé¡ãçãããã¬ãŒã ã¯ãŒã¯ã®å
éšæ§é ã®è€éããç 究ããããšãå¯èœã«ãªããŸããã ãããŠã誰ããå®éã®ãããžã§ã¯ãã§éå®ãããªããæããŠãã ããïŒ