Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. $someone = {"name" -> "Fred", "gender" -> "Male", "age" -> 25};
  2.  
  3. "name" /. $someone
  4. (* "Fred" *)
  5.  
  6. "age" /. $someone
  7. (* 25 *)
  8.  
  9. $person = person[name_, gender_, age_];
  10.  
  11. $someoneElse = person["Fred", "Male", 25];
  12.  
  13. $someoneElse /. $person :> name
  14. (* "Fred" *)
  15.  
  16. $someoneElse /. $person :> name ~~ " (" ~~ gender ~~ ")"
  17. (* "Fred (Male)" *)
  18.  
  19. personName[$person] := name
  20.  
  21. personGender[$person] := gender
  22.  
  23. personAge[$person] := age
  24.  
  25.  
  26. personName @ $someoneElse
  27. (* Fred *)
  28.  
  29. personAge @ $someoneElse
  30. (* 25 *)
  31.  
  32. SetAttributes[assembleName, HoldAll]
  33. assembleName[p_Symbol, s_Symbol] :=
  34. Context[p]~~SymbolName[p]~~StringReplace[SymbolName[s], f_~~r___ :> ToUpperCase[f]~~r] //
  35. Symbol
  36.  
  37. defineAccessors[f:w_[Verbatim[Pattern][_, Blank[]]..]] :=
  38. Cases[f, Verbatim[Pattern][s_, Blank[]] :> (Hold[#[f], s] &@ assembleName[w, s])] /.
  39. Hold[l:s_[___], r_] :> (l := r; s)
  40.  
  41. defineAccessors[movie[name_, year_, quote_]]
  42. (* {movieName, movieYear, movieQuote} *)
  43.  
  44. randomMovie[] :=
  45. RandomChoice @ {
  46. movie["2001: A Space Odyssey",1968,"Watch out! He's got a bone!"]
  47. , movie["Prometheus",2012,"Here, cobra, cobra... Gimme a hug!"]
  48. , movie["Star Wars: The Phantom Menace",1999,"I say we nuke the JJB from orbit..."]
  49. , movie["Firefly",2002,"...Sniff..."]
  50. }
  51.  
  52. $someMovie = randomMovie[];
  53.  
  54. $someMovie // movieName
  55. (* "2001: A Space Odyssey" *)
  56.  
  57. $someMovie // movieYear
  58. (* 1968 *)
  59.  
  60. $someMovie // movieQuote
  61. (* "Watch out! He's got a bone!" *)
  62.  
  63. {city, temperature, pressure} = {"London", 18, 1005};
  64.  
  65. res = obj["London", 18, 1005]
  66.  
  67. obj[a___]["city"] := obj[a][[1]]
  68. obj[a___]["temperature"] := obj[a][[2]]
  69. obj[a___]["pressure"] := obj[a][[3]]
  70.  
  71.  
  72. res["city"]
  73.  
  74. res["temperature"]
  75.  
  76. res["pressure"]
  77.  
  78. yourFunc[] := Module[{obj},
  79. obj["this"] = "lala";
  80. obj["that"] = 98;
  81. obj];
  82.  
  83. bla = yourFunc[];
  84. bla["this"]
  85. bla["that"]
  86.  
  87. SetAttributes[yourFunc2, HoldAll];
  88. yourFunc2[out1_][arg_] := (out1["bla"] = 98; out1["blo"] = 98 - arg;
  89. out1)
  90.  
  91. yourFunc2[x][23]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement