Advertisement
qwertyMAN_rus

Simple GUI Calculator

Nov 19th, 2022 (edited)
1,490
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.75 KB | None | 0 0
  1. frame = script.Parent
  2. buttonPlus = frame.Plus
  3. buttonMinus = frame.Minus
  4. buttonDiv = frame.Div
  5. buttonMul = frame.Mul
  6. number1 = frame.Number1
  7. number2 = frame.Number2
  8. numberAnswer = frame.NumberAnswer
  9.  
  10.  
  11. function sum(x, y)
  12.     return x + y
  13. end
  14.  
  15.  
  16. function sub(x, y)
  17.     return x - y
  18. end
  19.  
  20.  
  21. function div(x, y)
  22.     return y == 0 and "На ноль делить нельязя" or x / y -- а вот и тернарная конструкция
  23. end
  24.  
  25.  
  26. function mul(x, y)
  27.     return x*y
  28. end
  29.  
  30.  
  31. function printAnswer()
  32.     local x = tonumber(number1.Text) or 0 -- а вот и преобразование типов (Downcasting) и необходимость писать локальные переменные для чистых функций
  33.     local y = tonumber(number2.Text) or 0 -- параметр 0 по умолчанию на случай когда преобразование не удалось и получили nil
  34.     numberAnswer.Text = x .. opChar .. y .. "=" .. operation(x, y) -- преобразование типов из number в text (Upcasting) и конкатенация строк пригодилась
  35. end
  36.  
  37.  
  38. operation = sum -- переменная которая хранит функцию, которая определяет как совершать вычисления между числами
  39. opChar = "+"
  40.  
  41.  
  42. buttonPlus.MouseButton1Click:Connect(function()
  43.     operation = sum
  44.     opChar = "+"
  45.     printAnswer()
  46. end)
  47.  
  48.  
  49. buttonMinus.MouseButton1Click:Connect(function()
  50.     operation = sub
  51.     opChar = "-"
  52.     printAnswer()
  53. end)
  54.  
  55.  
  56. buttonDiv.MouseButton1Click:Connect(function()
  57.     operation = div
  58.     opChar = "/"
  59.     printAnswer()
  60. end)
  61.  
  62.  
  63. buttonMul.MouseButton1Click:Connect(function()
  64.     operation = mul
  65.     opChar = "x"
  66.     printAnswer()
  67. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement