博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[elixir! #0028] 掌控元编程的魔法(1) ---- 宏的卫生性
阅读量:6671 次
发布时间:2019-06-25

本文共 409 字,大约阅读时间需要 1 分钟。

宏的卫生(hygienic)是指, 我们在宏里赋值的变量, 不会对宏之外的变量造成影响.

例如:

defmodule Hygiene do  defmacro no_interference do    quote do      a = 1    end  endendrequire Hygienea = 10Hygiene.no_interferencea #=> 10

虽然我们在宏之内将 a 赋值为 1, 但 a 的值仍然为 10.

如果我们想打破宏的卫生性, 使用宏来更改变量的值, 那么我们就需要使用 var!宏:

defmodule NoHygiene do  defmacro interference do    quote do      var!(a) = 1    end  endendrequire NoHygienea = 10Nohygiene.interferencea #=> 1

转载地址:http://mxlxo.baihongyu.com/

你可能感兴趣的文章
一文掌握关于Java数据结构所有知识点(欢迎一起完善)
查看>>
1.JSP-UEditor实现上传图片到项目外(SSM)
查看>>
2018三月个人前端社招面试经验总结
查看>>
Mysql索引失效的几种情况
查看>>
爬虫 Scrapy 学习系列之一:Tutorial
查看>>
WPF:Animation动画--KeySplineAnimation关键帧进度控制动画(2)
查看>>
【356天】每日项目总结系列093(2018.01.27)
查看>>
Node.js学习之路03——Buffer类初识
查看>>
bootstrap常用样式整理
查看>>
webpack从零开始第5课:模块篇
查看>>
一起学设计模式 - 迭代器模式
查看>>
Docker实践 - 超简单配置Ftp服务
查看>>
惊群问题及解决
查看>>
Javascript面向对象从入门到重新入门--关于继承
查看>>
python __new__ 和 __init__
查看>>
SpringCloud(第 025 篇)Zuul 路由后面的微服务挂了后,Zuul 提供了一种回退机制来应对熔断处理...
查看>>
听说2017你想写前端?
查看>>
react-router v4 使用 history 控制路由跳转
查看>>
基于gulp的一个简单的处理多个api域名环境的开发工作流
查看>>
angular4 http RxJS Observable observer演示
查看>>