A.12. Chapter 12

A.12.1. Exercise 1 solution

script countMe
    property X : 0

    set X to X + 1
    log "I've been called " & (X as string) & " times"
end script

repeat 10 times
    run countMe
end repeat

A.12.2. Exercise 2 solution

on surfaceArea given radius:r
        return 4 * pi * r * r
end surfaceArea

A.12.3. Exercise 3 solution

on rectangle given width:w, height:h
    script
        property width : w
        property height : h
property origin : {0, 0} as point

        on area()
            return width * height
        end area

        on perimeter()
            return (width + height) * 2
        end perimeter

        on setOrigin given x:x0, y:y0
            set origin to {x0, y0} as point
        end setOrigin

        on getOrigin()
            return origin
        end getOrigin
    end script
end rectangle

on square given side:s
    script
        property side : s

        on area()
            return side * side
        end area

        on perimeter()
            return side * 4
        end perimeter
    end script
end square

-- test the new origin methods

set R1 to rectangle given width:10, height: 20
setOrigin of R1 given x:100, y:200
getOrigin() of R1

A.12.4. Exercise 4 solution

You can't use the store script command because you want to store handlers and not a single script by name into a file. (Note: you could encapsulate both the rectangle and square handlers inside a script compound statement and then write that script out to a file.)

set shapes to load script file ((path to scripts folder as string) & "rects.scpt")

set myRect to rectangle of shapes given width:15, height:20
set mySquare to square of shapes given side:12

log area() of myRect
log perimeter() of mySquare

A.12.5. ...

Get Beginning AppleScript® now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.