Skip to Content
Beginning AppleScript®
book

Beginning AppleScript®

by Stephen G. Kochan
December 2004
Beginner
600 pages
13h 42m
English
Wrox
Content preview from Beginning AppleScript®

A.8. Chapter 8

A.8.1. Exercise 1 solution

-- Add three numbers and return the result

on sum(x, y, z)
    if class of x is in {real, integer} and class of y is in {real, integer} and ¬
          class of z is in {real, integer} then
        return x + y + z
    else
        return 0
    end if
end sum

A.8.2. Exercise 2 solution

-- sum all the numbers in a list

on listSum(L)
    set theSum to 0

    if class of L is list then
        repeat with num in numbers in L
set theSum to theSum + num
        end repeat
    end

    return theSum
end listSum

A.8.3. Exercise 3 solution

-- remove numItems items from L starting at n

on removeItems(L, n, numItems)
  if n > 0 and numItems > 0 and n + numItems - 1   (count L) then
      if n = 1 then                                -- remove leading items
         if N + numItems - 1 = (count L) then
              set L to {}                          -- remove all items
         else
              set L to items (n + numItems) thru −1 of L
         end if
      else if n + numItems - 1 = (count L) then    -- remove ending items
         set L to items 1 thru (n - 1) of L
      else                                         -- remove in between items
         set L to (items 1 thru (n - 1) of L) & (items (n + numItems) thru −1) of L
      end if
  end if

  return L
end removeItems

-- test case
removeItems({1,2,3,4,5}, 2, 3)

A.8.4. Exercise 4 solution

The call

reverse of listSort(L)

would give you a list sorted in descending order.

A.8.5. Exercise 5 solution

on listSort of L given ascendingSort:ascendingFlag
    if ascendingFlag then
        return quickSort(L, 1, count L)
    else
        return reverse of quickSort(L, 1, count L)
    end if
end listSort

Bonus:

-- Recursive quick sort on listSort of L given ascendingSort:ascendingFlag return ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

AppleScript: The Missing Manual

AppleScript: The Missing Manual

Adam Goldstein
How to Develop a Great Digital Strategy

How to Develop a Great Digital Strategy

Jeanne W. Ross, Cynthia M. Beath, Ina M. Sebastian

Publisher Resources

ISBN: 9780764574009Purchase book