> For the complete documentation index, see [llms.txt](https://docs.getlaika.app/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.getlaika.app/docs/docs-cn/shi-yong-an-li/yu-hardhat-yi-qi-shi-yong/li-zi.md).

# 例子

接下来，让我们看一下一个示例，何时实现合约以及如何使用它。

我举的例子是一个名为 Greeter 的合约，它是 Hardhat 为我们生成的。在与Greeter交互时，我们可以选择使用它的函数，greet 函数，它将返回一个已设置的问候语，并具有 setGreeting 方法，当我们调用它时，它必须传递问候语值来设置问候语。现在当我们设置问候语时后，然后我们再次调用 greet命令，合约返回一个新的问候语。

![](https://lh4.googleusercontent.com/CteGJ75Np7JVMnp_8OihqL7pl5R1ito70w6k-35GaYwC7I4ynKXNB8aj4bmzpyxuaO6jizCquKtbmRSiY44vPd1lOC7pVMc_a-yZUM94SSPe6yOLfe9o7mc5KqzKZM8oMCmai1Kh)

我们将回到 VS code，打开文件 Greeter.sol，它将是我前面提到的示例合约。

![](https://lh4.googleusercontent.com/zdqm0bCMqbLLDUhg-KzwB45Vu7VLk4iz_j0skUVuw7d6XF0YXLSeTVnJbQxyR2H9xzh0LBqBv-rHOtzqgyvXeodF6IrBjXsfHJ7qoH5KbstBlsZcfteSiKQh_dq_x1i3jbA8SWi9)

接下来，让我们回顾一下部署这个合约的基础知识，以及如何将它部署到本地链。这里我们将向您展示位于 script 文件夹中的 sample-script.js 文件。这个文件可以用 hardhat 为我们生成。这是一个脚本，当我们运行它时，脚本将引导 Greeter 部署，请注意，第17行是我们设置对 Greeter 合约的引用的地方，第18行是我们部署这个契约的地方。进入网络，它会告诉我们，我们已经完成部署，并将部署到某个地址。在部署时，我们可以使用这个脚本：

![](/files/psANX0yRoeThUhh8KqD5)

下面是一个运行脚本的例子，我们将使用 `npx hardhat run` 命令在控制台中运行它，并选择我们想要在这里运行脚本的文件夹 sample-script.js 文件。在脚本文件夹中会有 `npx hardhat run script/sample-script.js` 命令。我们需要选择要将合约部署到的网络，然后输入命令 `--network localhost`，这是我们正在运行的 Hardhat 的网络。最后，我们将得到要部署的命令 `npx run script/sample-script.js --network localhost` 并按 enter 键。

![](/files/POAzhlr6sZUiV9YYo7XH)

现在我们已经完成了，我们将返回部署到的 Greeter 的合约地址。一旦我们获得了 Greeter 的合约地址，复制它，看看我们是否想在不编写代码的情况下跟合约交互。

![](/files/8Qy08gWAXhuMKJkMqd0W)

复制合约地址后，回到莱卡的网页，点击添加一个新的 collection。

![](/files/oJkR4YBLK5RrTYEH0JJw)

接下来，单击刚刚创建的集合后面的三个点，并添加一个方法，然后单击刚刚创建的新方法。

![](/files/lqJIufpi4IaXke67Mixm)

让我们使用我们刚刚复制的 Greeter 的合约地址。

![](/files/HH6Lk9oLE63rq9LyzAJC)

这里我们要调用的第一个函数是函数 greet，然后我们输入一个 greet 的方法名。

![](/files/zmbwQJMcVsMzg2Juhcaj)

函数 greet 不需要任何参数，但它会返回一个字符串，所以我们不放参数，只添加 return 并选择 string。这里，我们写在这里的问候函数不需要 input，我们只是让它空着，然后点击 Send。

![](/files/PQVvSlZQYx0S5zIPxYFI)

点击发送后，我们得到一个响应结果，我们可以看到名称是一个空字符串，类型为字符串，我们得到一个值 hello, Hardhat。这将表明我们已经成功地完成了对合约的调用。

![](/files/wMIzZbD4nCd6YTnP9uyI)

接下来，我们将尝试另一个函数，函数 setGreeting。让我们做与函数 greet 相同的事情，但将方法重命名为 setGreeting，但 setGreeting 函数是一个我们需要触发到合约的函数，所以我们需要设置的方法类型。这个价值是 NONPAYBLE 的，这样我们就可以对合约做写入操作了。

![](/files/UVR7g2qopCraYEaNlOP8)

通过函数 setGreeting 是一个创建交易的方法，但它是一个我们不需要支付原生代币所以这里我们选择了nonpayable。在这个函数中，我们需要参数，只需按加号添加参数，选择类型为字符串，将参数名称作为问候语，并输入值 Hola! 然后点击 Send。

![](/files/FAvOFweQCjRv5VUVJMYm)

在按下发送后，会弹出一个 Metamask 让我们创建交易，然后单击确认。

![](/files/aKls2BAZXcnvs5y1rUHB)

等待一段时间后，我们将得到结果的响应。

![](/files/my6BGfYJqbzQonOubQyy)

在这里，如果有人想观察更多细节，可以看看我们运行本地链的地方的输出信息。

![](/files/w2hRLKnxNEol8dA0YdbJ)

现在，我们已经将 “Hello hardhat”改为“Hola hardhat”，我们还可以再运行一次 greet 函数，看看结果是否真的发生了变化。

![](/files/KyaTmT3WzzAyFlPLxuKz)
