From da7a745fa5fe617df9bb4df874bffa18c1ccc912 Mon Sep 17 00:00:00 2001 From: Hank Date: Sat, 23 Mar 2024 20:53:28 +0800 Subject: [PATCH] 100243353 Move-Exam --- student_no.txt | 1 + task1/sources/main.move | 10 +++++----- task2/sources/main.move | 36 +++++++++++++++++++----------------- task3/sources/m1.move | 15 ++++++--------- task4/sources/main.move | 14 +++++--------- 5 files changed, 36 insertions(+), 40 deletions(-) diff --git a/student_no.txt b/student_no.txt index 2a6816f..1222fd6 100644 --- a/student_no.txt +++ b/student_no.txt @@ -1 +1,2 @@ # Please enter your 9-digit student number below. +100243353 diff --git a/task1/sources/main.move b/task1/sources/main.move index 2507060..b0ec0d4 100644 --- a/task1/sources/main.move +++ b/task1/sources/main.move @@ -2,16 +2,16 @@ // Create a struct called Wallet with a single field called balance of type u64. module 0x42::Task1 { - // TODO // Define a struct called Wallet with a single field called balance of type u64. struct Wallet has drop { - // ... + balance: u64 } - // TODO // Define a function called myWallet that returns a Wallet with a balance of 1000. fun myWallet(): Wallet { - // ... + Wallet { + balance: 1000 + } } #[test] @@ -19,4 +19,4 @@ module 0x42::Task1 { let wallet = myWallet(); assert!(wallet.balance == 1000, 0); } -} \ No newline at end of file +} diff --git a/task2/sources/main.move b/task2/sources/main.move index d6746d8..3a444ae 100644 --- a/task2/sources/main.move +++ b/task2/sources/main.move @@ -2,16 +2,18 @@ module 0x42::Task2{ use std::signer; - // TODO // Define a struct Foo with two fields: u: u64, b: bool with ability to drop - struct Foo { - // ... + struct Foo has drop { + u: u64, + b: bool } - // TODO // Define a function gen_Fool that takes two arguments: u: u64, b: bool and returns a Foo fun gen_Fool(u:u64, b:bool): Foo { - // ... + return Foo { + u, + b + } } #[test] @@ -30,16 +32,18 @@ module 0x42::Task2{ assert!(f.b == true,1); } - // TODO // Define a struct Soo with two fields: x: u64, y: u64 with ability to copy - struct Soo { - // ... + struct Soo has copy { + x: u64, + y: u64 } - // TODO // Define a function gen_Soo that takes two arguments: x: u64, y: u64 and returns a Soo fun gen_Soo(x:u64, y:u64): Soo { - // ... + return Soo { + x, + y + } } #[test] @@ -54,23 +58,21 @@ module 0x42::Task2{ let Soo { x: _, y: _ } = c2; } - // TODO // Define a struct Koo with a field: s: Moo with ability struct Koo { s: Moo } - // TODO // Define a struct Moo with a field: x: u64 with ability - struct Moo { + struct Moo has store { x: u64 } - - // TODO // Define a function gen_Moo that takes an argument: x: u64 and returns a Moo fun gen_Moo(x:u64): Moo { - // ... + return Moo { + x + } } #[test] @@ -80,4 +82,4 @@ module 0x42::Task2{ assert!(k.s.x == 42,0); let Koo { s: Moo { x: _ } } = k; } -} \ No newline at end of file +} diff --git a/task3/sources/m1.move b/task3/sources/m1.move index e3542c4..5bcc942 100644 --- a/task3/sources/m1.move +++ b/task3/sources/m1.move @@ -1,22 +1,19 @@ -// Tasl3 - module +// Tasl3 - module // Observe the function permissions called in M1, M2, and M3. // modify the visibility of the functions in M1, and set the M1 module visibility. module 0x42::M1{ - // TODO // Define a module friend M2 - friend ; - - // TODO + friend 0x42::M2; + // Define a function num that returns 66 with choose public or friend visibility - fun num():u64 { + public fun num():u64 { 66 } - // TODO // Define a function num2 that returns 88 with choose public or friend visibility - fun num2():u64 { + public(friend) fun num2():u64 { 88 } -} \ No newline at end of file +} diff --git a/task4/sources/main.move b/task4/sources/main.move index daa4423..7f50688 100644 --- a/task4/sources/main.move +++ b/task4/sources/main.move @@ -7,24 +7,20 @@ module 0x42::Task4 { use std::signer; - const NAME:vector = b"myObject"; + const NAME:vector = b"myObject"; - // TODO // 1. create a deleteable object public fun createDeleteableObject(caller: &signer):ConstructorRef { - // ... + object::create_object(signer::address_of(caller)) } - // TODO - // 2. create a named object public fun createNamedObject(caller: &signer):ConstructorRef { - // ... + object::create_named_object(caller, NAME) } - // TODO // 3. create a sticky object public fun createStickyObject(caller: &signer):ConstructorRef { - // ... + object::create_sticky_object(signer::address_of(caller)) } #[test(caller = @0x88)] @@ -49,4 +45,4 @@ module 0x42::Task4 { assert!( object::address_from_constructor_ref(&obj2) == @0xfab16b00983f01e5c2b7682472a4f4c3e5929fbba987958570b6290c02817df2, 1); } -} \ No newline at end of file +}