AMcoder - javascript, python, java, html, php, sql

AppleScript-ը ստուգում է՝ արդյոք ցանկի տարրի արժեքը ամբողջ թիվ է

AppleScript-ում ես փորձում եմ սովորել, թե ինչպես ստուգել ցուցակի տարրերի արժեքը, բայց երբ փորձում եմ ստուգել, ​​թե արդյոք նյութը ամբողջ թիվ է, ես ստանում եմ ոչ ճշգրիտ արդյունքներ: Սկզբում ես հղում արեցի Apple-ի ավտոմատացման ուղեցույցի ստորագրությանը բաժինը Որոշում, թե արդյոք ցուցակը պարունակում է կոնկրետ տարր.

property one : 1
property two : 2
property three : 3
property bad : 4

my checkProperty()

on checkProperty()
    tell application "Finder"
        set someList to {one, two, three, bad}
        if someList contains string then
            display dialog "good"
        else
            display dialog "not numerical"
        end if
    end tell
end checkProperty

Երբ ես կատարում եմ սա, ես ստանում եմ not numerical, չնայած յուրաքանչյուր տարր ամբողջ թիվ է: Եթե ​​հղում կատարեմ Applescript, փոխակերպելով ամեն տարրը ցուցակից մինչև ամբողջ թիվ և կատարեք՝

property one : 1
property two : 2
property three : 3
property bad : "bad"

my checkProperty()

on checkProperty()
    tell application "Finder"
        set someList to {one, two, three, bad}
        repeat with theItem from 1 to length of someList
            set item theItem of someList to (item theItem of someList as integer)
            if theItem is integer then
                display dialog theItem
            else
                display dialog "not numerical"
            end if
        end repeat
    end tell
end checkProperty

Այն աշխատում է մինչև ցուցակի վերջին մուտքը (bad) և սխալներ կան, քանի որ theItem-ը չի կարող տողը վերածել ամբողջ թվի: SO-ում որոնելիս հանդիպեցի Ստուգեք, արդյոք փոփոխականը համարն է՝ Applescript և փորձեցի ընդունված պատասխանը համարով:

property one : 1
property two : 2
property three : 3
property bad : "bad"

my checkProperty()

on checkProperty()
    tell application "Finder"
        set someList to {one, two, three, bad}
        repeat with theItem from 1 to length of someList
            if class of theItem is number then
                display dialog theItem
            else
                display dialog "not numerical"
            end if
        end repeat
    end tell
end checkProperty

բայց երբ սկրիպտը գործարկվում է, այն վերադարձնում է not numerical յուրաքանչյուր տարրի համար: Եթե ​​փորձեմ երկրորդ պատասխանը, որն օգտագործում է ամբողջ թիվ.

if class of theItem is integer then
    display dialog theItem
else
    display dialog "not numerical"
end if

Ինձ վերադարձվում է անհատական ​​երկխոսություն՝ գրառումները հաշվելու համար: Ինչպե՞ս կարող եմ ստուգել ցանկի տարրի արժեքը AppleScript-ում, որպեսզի տեսնեմ՝ արդյոք այն ամբողջ թիվ է, թե տող՝ առանց սխալի:


Պատասխանները:


1

Ստուգելու համար, թե արդյոք ցուցակի բոլոր տարրերը որոշակի տեսակի են.

to isListOfType(theList, theType)
  return (count {theList} each list) = 1 ¬
      and (count theList each theType) = (count theList)
end isListOfType

isListOfType({1, 2, 3}, integer) --> true
isListOfType({1, 2, 3, 4.5}, number) --> true
isListOfType({1, 2, 3, 4.5, "6"}, number) --> false

Ասված է, որ սովորաբար շատ ավելի արագ և հարմար է պարզապես արժեքներ գցել/պարտադրել ըստ անհրաժեշտության այն պահին, երբ դրանք օգտագործվում են, և կարգավորել ցանկացած սխալ այդ պահին: օր. "4"-ը կարող է տող լինել, բայց դա միանգամայն ընդունելի է, որտեղ սպասվում է ամբողջ թիվ/իրական, և AppleScript-ը, ընդհանուր առմամբ, կպարտադրի այն ձեզ համար, այնպես որ դուք ստիպված չեք լինի ինքներդ որևէ լրացուցիչ բան անել:

(Զգուշացում. AppleScript-ի որոշ պարտադրանքները վնասաբեր են, օրինակ՝ 4.5 as integer շրջում է մինչև (4) և {a:1, b:2} as list-ը վերադարձնում է հատկությունների արժեքները ({1, 2}), այլ ոչ թե մեկ կետից բաղկացած ցուցակ ({{a:1, b:2}}), որը կարող է լինել այն, ինչ ցանկանում եք: Բայց անկեղծ ասած, եթե Ձեզ իսկապես ամուր, հուսալի լեզու է պետք, այդ դեպքում դուք, այնուամենայնիվ, չպետք է օգտագործեք AppleScript):

--

p.s. Scripting Essentials ուղեցույցը, որին դուք կապել եք, աղբ է և լավագույնս խուսափել: Նմուշների կեսը նույնիսկ սխալ չէ, և նույնիսկ տեխնիկապես ճիշտ նմուշները հաճախ փխրուն են և դանդաղ: Դուք ցանկանում եք մի քանի արժանապատիվ ընդհանուր նշանակության արժեքավոր գրադարաններ, փորձեք դրանք, ապա խաբեք այս տոմսը bugreport.apple.com կայքում՝ խնդրելով Apple-ին ընդունել դրանք 10.13-ի համար:

06.01.2017

2

Ես կառաջարկեի խաղալ try/on error loop-ներով: Ես իմ mac atm-ում չեմ, բայց փորձեք սա.

property one : 1
property two : 2
property three : 3
property bad : "bad"

my checkProperty()

on checkProperty()
    tell application "Finder"
        set someList to {one, two, three, bad}
        repeat with theItem from 1 to length of someList
            try
                set item theItem of someList to (item theItem of someList as integer)
                display dialog theItem
            on error
                display dialog "not numerical"
            end try
        end repeat
    end tell
end checkProperty

Փաստաթղթեր փորձել/վրա սխալի վերաբերյալ.

05.01.2017
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..