我们经常需要将一个代码块传递给迭代器,并在代码块中调用另一个方法。Rails提供了一条实现这一功能的捷径,于是下面两句代码等价:
groups = posts.group_by { |post| post.author_id }
groups = posts.group_by(&:author_id)
让我们看下这一切是如何工作的:
class Symbol
# Turns the symbol into a simple proc, which is especially useful for enumerations. Examples:
#
# # The same as people.collect { |p| p.name }
# people.collect(&:name)
#
# # The same as people.select { |p| p.manager? }.collect { |p| p.salary }
# people.select(&:manager?).collect(&:salary)
def to_proc
Proc.new { |*args| args.shift.__send__(self, *args) }
end
end
&符号用在symbol前面实际上是调用了to_proc方法,而to_proc里返回一个Proc对象,内部为调用symbol指定的方法。举例如下:
projects = Project.find(:all)
projects.collect { |p| p.name }
# => ["Rails Projects", "Housework"]
projects.collect(&:name)
# => ["Rails Projects", "Housework"]
projects.collect(&:name).collect(&:downcase)
# => ["rails projects", "housework"]
projects.all?(&:valid?)
# => true
projects.any?(&:valid?)
# => true
分享到:
相关推荐
#ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #define __NO__VERSION__ ...//MODULE_PARM(var,type)模块参量的类型代码: b=byte h=short i=int l=long s=string
Ping 命令报错分析 - cap_set_proc 错误解决方案 Linux 权限控制机制中, capability 是一种基于进程的权限控制机制,它可以将传统的基于用户的权限控制机制进行细粒度的控制。Capability 机制可以控制进程的某些...
初始化进程控制块缓存,加快进程切换速度。 #### vfs_caches_init()函数 初始化虚拟文件系统缓存,优化文件操作性能。 #### buffer_init()函数 初始化缓冲区管理,用于提高磁盘I/O效率。 #### page_cache_init()...
### seq_file 与 proc 文件系统的实现 #### 概述 `proc` 文件系统是一种特殊的文件系统,它存在于内存中,并不占用实际磁盘空间。它主要用于提供系统内核的当前状态信息供用户空间程序访问。通过 `proc` 文件系统...
本主题将深入探讨如何利用proc文件系统创建一个设备文件,具体案例为"hello_proc.tar.gz_device_create_file_proc_hello"。 首先,`/proc`文件系统是一个虚拟文件系统,它并不存储在磁盘上,而是由内核动态生成的,...
标题中的"ProC-Sample.rar_oracle_oracle proc sample_proc"揭示了这是一个关于Oracle数据库的ProC编程示例。ProC是Oracle提供的一种预编译器,它允许开发者在PL/SQL中嵌入C代码,以提高性能和处理复杂计算。这个...
#define CONFIG_ONLY_ONE_OUT_EP_TO_LOW 0 #define CONFIG_OUT_EP_WIFI_MODE 0 #define ENABLE_USB_DROP_INCORRECT_OUT 0 #define RTL8192CU_ASIC_VERIFICATION 0 // For ASIC verification. #define RTL8192CU_...
- ProC是Oracle预编译器的简称,它将C语言源代码转换为PL/SQL块,然后这些块可以在Oracle数据库中执行。 - ProC提供了更接近底层数据库操作的方式,有助于提高性能,尤其是在处理大量数据时。 - ProC支持类型安全...
kernel_module_list_first_proc _level
`hide_file_and_proc.c`源代码很可能是用C语言编写的,这是一门常用于编写低级别系统代码的语言。在源代码中,可能会包含以下关键部分: 1. **设备驱动程序初始化**:这部分代码会注册设备驱动,使其在系统启动时...
由于分析基于MX1平台的内核启动过程,因此只关注通用代码以及定义在`CONFIG_ARCH_MX1ADS`配置下的代码。 #### 二、相关定义介绍 ##### 2.1 TEXTADDR - **定义**:`TEXTADDR`是内核映像的虚拟地址,通常位于内核...
seq_printf(m, "Link to /proc/sys/kernel/core_pattern\n"); return 0; } my_proc_link = proc_create("my_link", 0, NULL, &my_proc_link_fops); ``` 这里 `my_link` 将指向 `/proc/sys/kernel/core_pattern`...
VC++ ORACLE_oracle_vc oracle_vc oracle 10g proc*c"揭示了这个压缩包包含了一个使用VC++与Oracle数据库交互的项目示例,特别提到了`proc`,这可能是指Oracle的Pro*C,一个预编译器,用于将C或C++代码与PL/SQL结合...
matlab导入excel代码utl_special_case_of_column_percentages_wps_proc_r 列百分比wps proc r的特例。 关键字:sas sql join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI ...
- 使用`SetPageReserved()`标记这些页面为保留状态,这意味着它们不会被系统回收。 - 记录下分配的内存地址`kernel_memaddr`和大小`kernel_memsize`。 2. **通过proc文件系统暴露内存信息:** - 创建名为`...
在Linux系统中,获取CPU使用情况是通过读取`/proc`目录下的特定文件来实现的,这在程序开发中非常常见,特别是对于系统监控和性能分析的应用。本主题聚焦于如何利用C++语言在Linux环境下编程来读取`/proc/stat`文件...
multi_proc_wrong.c 下载后直接编译运行
本示例中的“11_sdi1in_hdmi_out_proc.rar”文件是一个FPGA设计项目,专注于SDI(Serial Digital Interface)输入和HDMI(High-Definition Multimedia Interface)输出的转换过程。这个项目对于视频处理和信号传输...