"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"
IjEuIERhdGEgZGVmaW5pdGlvbiIKfCBsaWJyYXJ5IGJvb2sxIGJvb2syIGNoZWNrb3V0QWN0aW9uIHwKCiJCb29rIG9iamVjdHMiCmJvb2sxIDo9IERpY3Rpb25hcnkgbmV3IGF0OiAjdGl0bGUgcHV0OiAnQm9va0EnOyBhdDogI2F2YWlsYWJsZSBwdXQ6IHRydWU7IHlvdXJzZWxmLgpib29rMiA6PSBEaWN0aW9uYXJ5IG5ldyBhdDogI3RpdGxlIHB1dDogJ0Jvb2tCJzsgYXQ6ICNhdmFpbGFibGUgcHV0OiB0cnVlOyB5b3Vyc2VsZi4KCiJMaWJyYXJ5IGNvbGxlY3Rpb24iCmxpYnJhcnkgOj0gT3JkZXJlZENvbGxlY3Rpb24gd2l0aDogYm9vazEgd2l0aDogYm9vazIuCgoiQ2hlY2tvdXQgbG9naWMiCmNoZWNrb3V0QWN0aW9uIDo9IFs6YUxpYnJhcnkgOmFUaXRsZSB8CiAgICB8IGJvb2sgfAogICAgYm9vayA6PSBhTGlicmFyeSBkZXRlY3Q6IFs6YiB8IChiIGF0OiAjdGl0bGUpID0gYVRpdGxlXSBpZk5vbmU6IFtuaWxdLgogICAgKGJvb2sgbm90TmlsIGFuZDogW2Jvb2sgYXQ6ICNhdmFpbGFibGVdKQogICAgICAgIGlmVHJ1ZTogWwogICAgICAgICAgICBib29rIGF0OiAjYXZhaWxhYmxlIHB1dDogZmFsc2UuCiAgICAgICAgICAgIFRyYW5zY3JpcHQgc2hvdzogJ1N1Y2Nlc3M6ICcsIGFUaXRsZSwgJyBjaGVja2VkIG91dC4nOyBjci5dCiAgICAgICAgaWZGYWxzZTogWwogICAgICAgICAgICBUcmFuc2NyaXB0IHNob3c6ICdGYWlsZWQ6ICcsIGFUaXRsZSwgJyBub3QgYXZhaWxhYmxlLic7IGNyLl0KXS4KCiJFeGVjdXRpb24iCmNoZWNrb3V0QWN0aW9uIHZhbHVlOiBsaWJyYXJ5IHZhbHVlOiAnQm9va0EnLgpjaGVja291dEFjdGlvbiB2YWx1ZTogbGlicmFyeSB2YWx1ZTogJ0Jvb2tBJy4ieW91ciBjb2RlIGdvZXMgaGVyZSI=