""1. Data definition"
| library book1 book2 checkoutAction |
"Book objects"
book1 := Dictionary new at: #title put: 'BookA'; at: #available put: true; yourself.
book2 := Dictionary new at: #title put: 'BookB'; at: #available put: true; yourself.
"Library collection"
library := OrderedCollection with: book1 with: book2.
"Checkout logic"
checkoutAction := [:aLibrary :aTitle |
| book |
book := aLibrary detect: [:b | (b at: #title) = aTitle] ifNone: [nil].
(book notNil and: [book at: #available])
ifTrue: [
book at: #available put: false.
Transcript show: 'Success: ', aTitle, ' checked out.'; cr.]
ifFalse: [
Transcript show: 'Failed: ', aTitle, ' not available.'; cr.]
].
"Execution"
checkoutAction value: library value: 'BookA'.
checkoutAction value: library value: 'BookA'.your code goes here"
IiIxLiBEYXRhIGRlZmluaXRpb24iCnwgbGlicmFyeSBib29rMSBib29rMiBjaGVja291dEFjdGlvbiB8CgoiQm9vayBvYmplY3RzIgpib29rMSA6PSBEaWN0aW9uYXJ5IG5ldyBhdDogI3RpdGxlIHB1dDogJ0Jvb2tBJzsgYXQ6ICNhdmFpbGFibGUgcHV0OiB0cnVlOyB5b3Vyc2VsZi4KYm9vazIgOj0gRGljdGlvbmFyeSBuZXcgYXQ6ICN0aXRsZSBwdXQ6ICdCb29rQic7IGF0OiAjYXZhaWxhYmxlIHB1dDogdHJ1ZTsgeW91cnNlbGYuCgoiTGlicmFyeSBjb2xsZWN0aW9uIgpsaWJyYXJ5IDo9IE9yZGVyZWRDb2xsZWN0aW9uIHdpdGg6IGJvb2sxIHdpdGg6IGJvb2syLgoKIkNoZWNrb3V0IGxvZ2ljIgpjaGVja291dEFjdGlvbiA6PSBbOmFMaWJyYXJ5IDphVGl0bGUgfAogICAgfCBib29rIHwKICAgIGJvb2sgOj0gYUxpYnJhcnkgZGV0ZWN0OiBbOmIgfCAoYiBhdDogI3RpdGxlKSA9IGFUaXRsZV0gaWZOb25lOiBbbmlsXS4KICAgIChib29rIG5vdE5pbCBhbmQ6IFtib29rIGF0OiAjYXZhaWxhYmxlXSkKICAgICAgICBpZlRydWU6IFsKICAgICAgICAgICAgYm9vayBhdDogI2F2YWlsYWJsZSBwdXQ6IGZhbHNlLgogICAgICAgICAgICBUcmFuc2NyaXB0IHNob3c6ICdTdWNjZXNzOiAnLCBhVGl0bGUsICcgY2hlY2tlZCBvdXQuJzsgY3IuXQogICAgICAgIGlmRmFsc2U6IFsKICAgICAgICAgICAgVHJhbnNjcmlwdCBzaG93OiAnRmFpbGVkOiAnLCBhVGl0bGUsICcgbm90IGF2YWlsYWJsZS4nOyBjci5dCl0uCgoiRXhlY3V0aW9uIgpjaGVja291dEFjdGlvbiB2YWx1ZTogbGlicmFyeSB2YWx1ZTogJ0Jvb2tBJy4KY2hlY2tvdXRBY3Rpb24gdmFsdWU6IGxpYnJhcnkgdmFsdWU6ICdCb29rQScueW91ciBjb2RlIGdvZXMgaGVyZSI=