• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Crashing Script
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Crashing Script


  • Subject: Re: Crashing Script
  • From: Yvan KOENIG <email@hidden>
  • Date: Fri, 12 Feb 2016 19:47:58 +0100

Oops, I answered directly to Steve Mills.
Here is a synthesis of my answers.

Le 2016/02/12 à 19:17, Steve Mills <email@hidden> a écrit :

On Feb 12, 2016, at 11:47 AM, Yvan KOENIG <email@hidden> wrote:

I was not really surprised to get the same date in every sublists.
To get the different values just edit one instruction :

set timePair to {newTime as text, TimeAsText}

Why did this not surprise you? Look at the description for "date":

A date is a date-time, stored internally as a number of seconds since some fixed initial reference date. 


A date can be mutated in place, and is one of the classes for which set and copy behave differently.


Why, when "set" was used, does the value of newTime appear to be different (and unchanged) than when it is converted to text?
 
Sent from iCloud's ridiculous UI, so, sorry about the formatting



I was not really surprised because I already got this behavior in the past.
My understanding is - but no guarantee - that when we put a date in a list, we just put a reference to the variable which continue to live.
When we insert a string we really insert the group of characters as a dead item.

If you want to store the date as a date, take care of what I highlighted above and test the code edited as :

repeat 100 times
set newTime to myTime # original instruction
copy myTime to newTime # new one
set time of newTime to random number from 1 to secsInADay
newTime
set TimeAsText to my DateToTimeText(newTime)
set timePair to {newTime, TimeAsText}
set the end of timeList to timePair
end repeat

repeat 100 times
set newTime to myTime # original instruction
set time of newTime to random number from 1 to secsInADay
newTime
set TimeAsText to my DateToTimeText(newTime)
copy {newTime, TimeAsText} to timepair
set the end of timeList to timepair
end repeat

repeat 100 times
set newTime to myTime # original instruction
set time of newTime to random number from 1 to secsInADay
newTime
set TimeAsText to my DateToTimeText(newTime)
set timePair to {newTime, TimeAsText}
copy timePair to end of timeList
end repeat


Here it return:
{{date "vendredi 12 février 2016 16:52:59", "4:52 p.m."}, {date "vendredi 12 février 2016 12:14:52", "12:14 a.m."}, {date "vendredi 12 février 2016 10:51:30", "10:51 a.m."}, {date "vendredi 12 février 2016 17:04:06", "5:04 p.m."}, {date "vendredi 12 février 2016 20:57:58", "8:57 p.m."}, {date "vendredi 12 février 2016 03:45:42", "3:45 a.m."}, {date "vendredi 12 février 2016 18:03:57", "6:03 p.m."}, {date "vendredi 12 février 2016 19:15:58", "7:15 p.m."}, {date "vendredi 12 février 2016 07:28:44", "7:28 a.m."}, {date "vendredi 12 février 2016 14:07:54", "2:07 p.m."}, {date "vendredi 12 février 2016 19:52:22", "7:52 p.m."}, {date "vendredi 12 février 2016 04:07:22", "4:07 a.m."}, {date "vendredi 12 février 2016 22:05:58", "10:05 p.m."}, {date "vendredi 12 février 2016 07:30:26", "7:30 a.m."}, {date "vendredi 12 février 2016 17:52:42", "5:52 p.m."}, {date "vendredi 12 février 2016 22:54:06", "10:54 p.m."}, {date "vendredi 12 février 2016 00:21:48", "0:21 a.m."}, {date "vendredi 12 février 2016 04:20:26", "4:20 a.m."}, {date "vendredi 12 février 2016 00:38:19", "0:38 a.m."}, {date "vendredi 12 février 2016 04:06:08", "4:06 a.m."}, {date "vendredi 12 février 2016 12:46:35", "12:46 a.m."}, {date "vendredi 12 février 2016 08:26:21", "8:26 a.m."}, {date "vendredi 12 février 2016 13:05:27", "1:05 p.m."}, {date "vendredi 12 février 2016 16:34:17", "4:34 p.m."}, {date "vendredi 12 février 2016 12:13:10", "12:13 a.m."}, {date "vendredi 12 février 2016 15:09:01", "3:09 p.m."}, {date "vendredi 12 février 2016 03:51:44", "3:51 a.m."}, {date "vendredi 12 février 2016 03:04:44", "3:04 a.m."}, {date "vendredi 12 février 2016 09:14:51", "9:14 a.m."}, {date "vendredi 12 février 2016 07:01:50", "7:01 a.m."}, {date "vendredi 12 février 2016 00:58:07", "0:58 a.m."}, {date "vendredi 12 février 2016 02:15:08", "2:15 a.m."}, {date "vendredi 12 février 2016 06:17:07", "6:17 a.m."}, {date "vendredi 12 février 2016 04:21:10", "4:21 a.m."}, {date "vendredi 12 février 2016 22:00:30", "10 p.m."}, {date "vendredi 12 février 2016 18:54:05", "6:54 p.m."}, {date "vendredi 12 février 2016 17:17:24", "5:17 p.m."}, {date "vendredi 12 février 2016 14:49:41", "2:49 p.m."}, {date "vendredi 12 février 2016 05:05:29", "5:05 a.m."}, {date "vendredi 12 février 2016 21:44:18", "9:44 p.m."}, {date "vendredi 12 février 2016 20:31:46", "8:31 p.m."}, {date "vendredi 12 février 2016 13:11:13", "1:11 p.m."}, {date "vendredi 12 février 2016 14:02:03", "2:02 p.m."}, {date "vendredi 12 février 2016 00:01:14", "0:01 a.m."}, {date "vendredi 12 février 2016 07:52:05", "7:52 a.m."}, {date "vendredi 12 février 2016 01:01:35", "1:01 a.m."}, {date "vendredi 12 février 2016 13:25:00", "1:25 p.m."}, {date "vendredi 12 février 2016 16:06:32", "4:06 p.m."}, {date "vendredi 12 février 2016 23:40:01", "11:40 p.m."}, {date "vendredi 12 février 2016 16:36:43", "4:36 p.m."}, {date "vendredi 12 février 2016 23:23:22", "11:23 p.m."}, {date "vendredi 12 février 2016 11:25:06", "11:25 a.m."}, {date "vendredi 12 février 2016 09:20:27", "9:20 a.m."}, {date "vendredi 12 février 2016 17:21:20", "5:21 p.m."}, {date "vendredi 12 février 2016 16:24:41", "4:24 p.m."}, {date "vendredi 12 février 2016 15:20:47", "3:20 p.m."}, {date "vendredi 12 février 2016 05:52:20", "5:52 a.m."}, {date "vendredi 12 février 2016 23:01:27", "11:01 p.m."}, {date "vendredi 12 février 2016 15:22:18", "3:22 p.m."}, {date "vendredi 12 février 2016 04:15:50", "4:15 a.m."}, {date "vendredi 12 février 2016 05:34:31", "5:34 a.m."}, {date "vendredi 12 février 2016 14:28:59", "2:28 p.m."}, {date "vendredi 12 février 2016 06:42:19", "6:42 a.m."}, {date "vendredi 12 février 2016 17:56:23", "5:56 p.m."}, {date "vendredi 12 février 2016 03:24:10", "3:24 a.m."}, {date "vendredi 12 février 2016 16:04:44", "4:04 p.m."}, {date "vendredi 12 février 2016 15:14:06", "3:14 p.m."}, {date "vendredi 12 février 2016 00:02:58", "0:02 a.m."}, {date "vendredi 12 février 2016 02:35:35", "2:35 a.m."}, {date "vendredi 12 février 2016 11:41:13", "11:41 a.m."}, {date "vendredi 12 février 2016 20:35:26", "8:35 p.m."}, {date "vendredi 12 février 2016 02:18:33", "2:18 a.m."}, {date "vendredi 12 février 2016 05:34:13", "5:34 a.m."}, {date "vendredi 12 février 2016 21:22:07", "9:22 p.m."}, {date "vendredi 12 février 2016 05:48:04", "5:48 a.m."}, {date "vendredi 12 février 2016 19:05:39", "7:05 p.m."}, {date "vendredi 12 février 2016 12:16:15", "12:16 a.m."}, {date "vendredi 12 février 2016 14:35:35", "2:35 p.m."}, {date "vendredi 12 février 2016 05:39:47", "5:39 a.m."}, {date "vendredi 12 février 2016 05:17:09", "5:17 a.m."}, {date "vendredi 12 février 2016 16:44:07", "4:44 p.m."}, {date "vendredi 12 février 2016 00:05:59", "0:05 a.m."}, {date "vendredi 12 février 2016 22:34:02", "10:34 p.m."}, {date "vendredi 12 février 2016 17:10:30", "5:10 p.m."}, {date "vendredi 12 février 2016 11:08:56", "11:08 a.m."}, {date "vendredi 12 février 2016 16:02:57", "4:02 p.m."}, {date "vendredi 12 février 2016 06:31:07", "6:31 a.m."}, {date "vendredi 12 février 2016 02:12:45", "2:12 a.m."}, {date "vendredi 12 février 2016 21:17:12", "9:17 p.m."}, {date "vendredi 12 février 2016 15:32:27", "3:32 p.m."}, {date "vendredi 12 février 2016 15:13:33", "3:13 p.m."}, {date "vendredi 12 février 2016 18:04:30", "6:04 p.m."}, {date "vendredi 12 février 2016 00:14:28", "0:14 a.m."}, {date "vendredi 12 février 2016 02:32:11", "2:32 a.m."}, {date "vendredi 12 février 2016 15:41:05", "3:41 p.m."}, {date "vendredi 12 février 2016 09:24:14", "9:24 a.m."}, {date "vendredi 12 février 2016 22:32:20", "10:32 p.m."}, {date "vendredi 12 février 2016 01:40:13", "1:40 a.m."}, {date "vendredi 12 février 2016 11:55:31", "11:55 a.m."}, {date "vendredi 12 février 2016 09:11:28", "9:11 a.m."}}

When we use set, we just create a pointer from myTime to newTime so at the end all occurrences point to the late value.

If we use copy, we create a new object so we get the different values.

Its what I understand when I read AppleScript User Guide:

Using the copy and set Commands

As its name implies, when you use the copy (page 153) command to create a variable, it always creates a separate copy (though note that a copy of an object specifier still specifies the same object). However, when you use the set (page 197) command to create a variable, the new variable always refers to the original object or value. You have essentially created another name for the same object.

When more than one variable refers to a changeable (or mutable) object, a change to the object is observable throughanyofthevariables.ThetypesofAppleScriptobjectsthataremutablearedate(page106),list(page 112), record (page 118), and script (page 121) objects.

For objects that cannot be modified (immutable objects), variables created with the set command may seem like copies—there’s no way to change the object the variables point to, so they seem independent. This is demonstrated in the example in the next section that creates the variables myName and yourName. 


Yvan KOENIG running El Capitan 10.11.3 in French (VALLAURIS, France) vendredi 12 février 2016 19:46:52



 _______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users

This email sent to email@hidden

  • Follow-Ups:
    • Re: Crashing Script
      • From: "Stockly, Ed" <email@hidden>
References: 
 >Crashing Script (From: "Stockly, Ed" <email@hidden>)
 >Re: Crashing Script (From: Yvan KOENIG <email@hidden>)

  • Prev by Date: Re: Crashing Script
  • Next by Date: Re: Crashing Script
  • Previous by thread: Re: Crashing Script
  • Next by thread: Re: Crashing Script
  • Index(es):
    • Date
    • Thread